Rails,单击 link_to helper 后未加载 JavaScript

2024-04-30

当我在 Rails 中使用 link_to 帮助程序时,我在加载 javascript 时遇到了一些问题。当我手动输入 'localhost:3000/products/new' 的 url 或重新加载页面时,JavaScript 会加载,但是当我浏览如下所示的链接时,jQuery$(document).ready不会加载到新页面上。

Link_to,当我单击此链接时,javascript 不会加载:

<%= link_to "New Product", new_product_path %>

产品.js 文件

$(document).ready(function() {
    alert("test");
});

任何帮助将非常感激。提前致谢!


你在使用 Rails 4 吗? (通过做发现rails -v在你的控制台中)

这个问题可能是由于新添加的涡轮链接 https://github.com/rails/turbolinks/宝石。它使您的应用程序表现得像单页 JavaScript 应用程序。它有一些好处(更快了 http://blog.steveklabnik.com/posts/2012-09-27-seriously--numbers--use-them-),但不幸的是它破坏了一些现有的事件,例如$(document).ready()因为页面永远不会重新加载。这可以解释为什么当你直接加载 URL 时 JavaScript 可以工作,但当你通过一个 URL 导航到它时却不能工作。link_to.

这是一个RailsCast http://railscasts.com/episodes/390-turbolinks关于 Turbolinks。

有几个解决方案。您可以使用jquery.turbolinks https://github.com/kossnocorp/jquery.turbolinks作为直接修复,或者您可以切换$(document).ready()声明改为使用 Turbolinks'page:change' event:

$(document).on('page:change', function() {
    // your stuff here
});

或者,您可以执行类似的操作以与常规页面加载以及 Turbolinks 兼容:

var ready = function() {
    // do stuff here.
};

$(document).ready(ready);
$(document).on('page:change', ready);

如果您使用的是 Ruby on Rails >5(您可以通过运行来检查rails -v在控制台中)使用'turbolinks:load'代替'page:change'

$(document).on('turbolinks:load', ready); 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails,单击 link_to helper 后未加载 JavaScript 的相关文章

随机推荐