当我在 Rails 中使用 link_to 帮助程序时,我在加载 javascript 时遇到了一些问题。当我使用“localhost:3000/products/new”手动输入 url 或重新加载页面时,javascript 加载,但是当我通过如下所示的链接时,jQuery $(document).ready
将不会加载新页面。
Link_to,单击此链接时不会加载 javascript:
<%= link_to "New Product", new_product_path %>
products.js文件
$(document).ready(function() {
alert("test");
});
任何帮助将非常感激。提前致谢!
原文由 StickMaNX 发布,翻译遵循 CC BY-SA 4.0 许可协议
你在使用 Rails 4 吗? (通过在您的控制台中执行
rails -v
找出答案)这个问题可能是由于新添加的 Turbolinks gem。它使您的应用程序表现得像一个单页 JavaScript 应用程序。它有一些好处( 速度更快),但不幸的是 它破坏了一些现有事件,例如
$(document).ready()
因为页面永远不会重新加载。这可以解释为什么当您直接加载 URL 时 JavaScript 起作用,但当您通过link_to
导航到它时却不起作用。这是关于 Turbolinks 的 RailsCast 。
有几个解决方案。您可以使用 jquery.turbolinks 作为直接修复,或者您可以将
$(document).ready()
语句切换为使用 Turbolinks'page:change'
事件:或者,您可以执行类似这样的操作以与常规页面加载以及 Turbolinks 兼容:
如果您使用 Ruby on Rails >5(您可以通过在控制台中运行
rails -v
来检查)使用'turbolinks:load'
而不是'page:change'