rails app中不显眼的js无法按预期工作

时间:2016-03-13 21:33:54

标签: javascript ruby-on-rails

我有一个link_to:

<%= link_to "Load More", comments_feed_path(@post.id), :id => 'my-link', :remote => true %>

,这在application.js文件中:

$( document ).ready(function() {

    $('#my-link').bind('click', function() {
        alert('Hooray!');

       //event.preventDefault(); // Prevent link from following its href
      });
});

但没有任何反应。如果我这样做,它会按预期工作,但我宁愿使用不引人注目的js ......

<%= link_to "Load More", comments_feed_path(@story.id), :id => 'my-link', :onclick => "test()", :remote => true%>

的application.js:

function test(){
    alert('test');
}

关于我缺少的任何想法?

1 个答案:

答案 0 :(得分:1)

似乎是一个常见的turbolinks问题。 Turbolinks是gem,默认情况下包含在rails中,可以防止在每个请求中加载页面的公共部分。它阻止重新加载的最常见部分是标题,包括所有javascript定义。这意味着,您的$(document).ready回调仅针对您应用的初始页面执行。

要解决此问题,您需要将$(document).ready更改为:

$(document).on('turbolinks:load', function() {

阅读文档:https://github.com/turbolinks/turbolinks