【问题标题】:Remote link_to is requesting html instead of js远程 link_to 请求的是 html 而不是 js
【发布时间】:2021-04-04 08:33:03
【问题描述】:

我想这样做,当您单击链接时,它会在同一页面上附加有关帖子的一些信息,而无需重新加载该页面。我实现这一点的方法是使用 jQuery。所以我在我的视图中使用 show.js.erb 设置<%= link_to posts_controller(post), remote: true %>。这不起作用,因为它只是将我发送到 html 页面而不响应 JavaScript。这是使用 GET 而不是 POST 请求。

我尝试从我的application.js 添加和删除rails-ujsjquery_ujs,使按钮将您发送到它的JavaScript 格式(虽然只显示原始JavaScript),我尝试使用不同的jQuery 版本(jQuery 1 和 3),以及从我的 application.html.erb 中删除和添加 <%= javascript_include_tag :jquery %>

我已经添加了

respond_to do |format|
      format.html
      format.js
end

到我的控制器。我的application.js 中有//= require jquery3//= require jquery_ujs

我已将alert('sumthing'); 添加到我的show.js.erb,但单击链接时没有显示任何内容,这让我得出结论,jQuery 或我设置链接的方式有问题。

【问题讨论】:

    标签: jquery ruby-on-rails


    【解决方案1】:

    我假设您的 Rails 应用程序没有您认为的 javascript_include_tag(或 javascript_pack_tag)。 rails 应用程序中的 POST 方法可以通过 javascript 正确工作。

    如果您的 Rails 应用程序版本为 6,则应在 application.html.erb 中使用 javascript_pack_tag。

    可能,在网络浏览器控制台中,您可以找到某种与 javascript 读取相关的错误。

    你应该检查一下。

    【讨论】:

    • 我的<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> 中有application.html.erb,仅此而已。我只在我的网络浏览器控制台中收到警告,它们都是关于“Cookie“密钥”将很快被视为跨站点 cookie”。
    • 我假设您的应用程序不读取 javascript 文件。你的应用在 javascript/packs 目录下有 application.js 吗?
    • 有趣。我的应用程序确实有 application.js。我在 application.js 中添加了 jquery3 和 jquery_ujs
    • application.js在packs目录下?我假设您的应用程序无法读取所有 javascript 文件。在 Rails 6 中,应用程序默认通过 webpacker 读取 javascript 文件。
    • 是在包目录下。我应该尝试将 jQuery 安装到我的 webpacker 吗?
    【解决方案2】:

    找出问题所在。这是因为对于 rails 6,您必须使用 jQuery 的 web packer 版本。我想出了如何使用this helpful guide. 安装它也感谢 educ_gt 引导我解决我的问题。

    【讨论】:

      猜你喜欢
      • 2016-09-27
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      相关资源
      最近更新 更多