Rails Jquery在其他页面上无法运行。

5

我认为jQuery只能在安装它的那一页上运行。例如,当我在localhost:3000/输入时,在“/”目录中所有jQuery都可以正常工作。但是,当我点击Rails创建的链接时

<%= link_to "Example Link", news_path %>

页面可以正常加载,但是jQuery无法正常工作。 我的jQuery代码如下:
$(function() {
  console.log( "pageloaded" );
  ....
  $('.up').click(function(){
    .....
  });
});

1
在你的浏览器上右键点击,选择“检查元素”,再选择“控制台”.. 将错误信息贴在这里。 - rails_id
没有任何错误信息。但是 jQuery 没有被加载。 - Yagiz
1
你使用的Rails版本是什么?在Rails 4中,默认情况下启用了turbolinks,这意味着新页面会动态加载,并且不会触发$(document).ready。如果手动加载localhost:3000/news会发生什么? - Martin M
在这种情况下,我该如何使一个 jQuery 函数在每个页面都可用? - Yagiz
3个回答

11
在Rails 4中,默认情况下启用了turbolinks。这意味着当您加载新页面时,$(document).ready() 不会被执行。 turbolink 触发一个新的事件 page:load。您可以使用它来运行您的JavaScript代码。
$(document).on('page:load', your_start_function);

关于 Turbolinks 的一个优秀 Rails 视频教程


+1,如果你想关闭Turbo Links :) - http://blog.steveklabnik.com/posts/2013-06-25-removing-turbolinks-from-rails-4 - house9
实际上,有一个名为“jquery.turbolinks”的宝石,它将页面:加载事件与jquery准备事件绑定在一起。 - Yagiz

2

0

您需要在Gemfile中添加gem 'jquery-rails'(如果您使用bundler,请执行bundle install)

完成后,您需要在application.js文件中引入它:

//= require jquery

最后,您需要确保将application.js文件作为应用程序模板的一部分加载。在application.html.erb中,您应该有以下内容:

<%= javascript_include_tag "application" %>

我相信这些设置在Rails安装中都是默认存在的,所以如果你删除了其中任何一个设置,你需要将它们添加回来才能使其正常工作。


jQuery Rails 宝石已正确安装,并且在第一页上 jQuery 的功能良好。 - Yagiz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接