远程 link_to 请求的是 html 而不是 js
Posted
技术标签:
【中文标题】远程 link_to 请求的是 html 而不是 js【英文标题】:Remote link_to is requesting html instead of 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-ujs
和jquery_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 或我设置链接的方式有问题。
【问题讨论】:
【参考方案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 引导我解决我的问题。
【讨论】:
以上是关于远程 link_to 请求的是 html 而不是 js的主要内容,如果未能解决你的问题,请参考以下文章
如何构建一个带有字符串ID而不是数字ID的link_to标记?