turbolinks:加载事件不触发远程真正的呼叫,导轨,jQuery的

问题描述:

我在app/assets/javascripts/media_preview_script.jsturbolinks:加载事件不触发远程真正的呼叫,导轨,jQuery的

$(document).on('turbolinks:load', function() { 
    $("#cat").on('click', function() { 
    showBrowseInput() 
    }) 
}) 
function showBrowseInput() { 
    do stuff here 
} 

据说turbolinks:load一个简单的js文件,使这个脚本附加上第一页的负荷,那么任何turbolinks后调用,但它不会这样做。它仅在页面加载时才加载,然后任何remote: true调用返回事件未附加。这与我在应用中使用的任何脚本都是一样的。

这是因为$(document).on('turbolinks:load'...在开始,当我删除这个,如果我包含文件在视图窗体<%= javascript_include_tag "file_name" %>我没有得到双重附件文件和事件将附加每个js调用或页面加载。所以我的问题是,javascript_include_tag在turbolinks函数中添加了吗?或者任何人都可以告诉我这里发生了什么。我使用的轨道5

布局/ application.html.erb

<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> 

javascipt的包括标签API文档here和布局以及渲染here

我认为这个问题是remote: true使得它所有的工作与阿贾克斯。您可以处理您要使用此代码的事件:

$('form').ajaxError(function(event, request, settings) { 
    // your code 
}) 

$('form').bind('ajax:success', function(evt, data, status, xhr){ 
    // your code 
}) 

中陈述https://*.com/a/8956770/2162591

UPDATE:

我用这个解决方案得到的唯一的问题是,AJAX:成功的页面之前触发完全刷新。我用这个代码来代替:

$('form').bind('turbolinks:request-end', function(evt, data, status, xhr){ 
    // your code 
}); 
+0

真的,我正在混淆turbolinks和remote:true。谢谢! –