Rails 应用程序中不显眼的 JS 无法按预期工作

unobtrusive js in rails app not working as expected

本文关键字:工作 JS 应用程序 不显眼 Rails      更新时间:2023-09-26

>我有一个这样的link_to:

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

这在应用程序.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%>

应用.js:

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

关于我错过了什么的任何想法?

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

要修复它,您需要将$(document).ready更改为:

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

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