2017-01-01 7 views
1

Rails 5アプリでjQueryコードを書いていますが、コードがコンパイルされていないようです。これは私のコードです:Rails 5(turbolinks 5)でjQueryコードを正しく書く方法

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]

関連する問題