2017-01-01 30 views
1

我在我的Rails 5應用程序中編寫jQuery代碼,它看起來像代碼不編譯。這是我的代碼:如何在Rails 5中正確編寫jQuery代碼(使用turbolinks 5)

application.html.erb

<%= content_for?(:head) ? yield(:head) : '' %> 
    <%= javascript_include_tag "application" %> 
    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 
    <%= javascript_include_tag "//www.google.com/jsapi", "chartkick" %> 

的application.js

//= require code.js 
//= require jquery 
//= require fancybox 
//= require jquery_ujs 
//= require jquery.turbolinks 
//= require turbolinks 
//= require bootstrap-sprockets 
//= require bootstrap 
//= require_tree . 
$.turbo.use('turbolinks:load', 'turbolinks:request-start') 

function printpage() 
{ 
    window.print() 
} 

var resetForms = function() { 
    // this depends on your use 
    // this is for foundation 6's abide 
    $('form').each(function() { 
    $(this).foundation('destroy'); 
    }); 
}; 

document.addEventListener("turbolinks:before-cache", function() { 
    resetForms(); 
}); 

當我嘗試在code.js它只是不工作使用$(document).ready(function(){});,但是當我嘗試這樣的:

document.addEventListener("turbolinks:load", function() { 
alert("ok!") 
}); 

它沒有問題。我不明白爲什麼代碼與其他版本的Rails一起工作,這次不起作用。此外,我可以說,我的應用程序版本號5

回答

1
$(document).ready(function() { 
    resetForms(); 
}); 

這不會起作用,因爲Turbolinks覆蓋正常的頁面加載過程中使用turbolinks,這依賴於事件不會被解僱。如果你的代碼看起來像這樣,你必須改變你的代碼要做到這一點,而不是:

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

如果它的軌道的另一個版本的工作,它可能使用turbolinks的舊版本。

http://guides.rubyonrails.org/working_with_javascript_in_rails.html#turbolinks [1]

相關問題