Rails4.2でJavaScriptを書いている時、最初のページ遷移ではJSが上手く起動せず、リロードすると起動することがあります。Rails4からデフォルトで使用できるturbolinks
というgemが、問題を起こしているらしいです。Getでページ遷移する時、jQueryのreadyイベントが起きないため、例えば$(function(){})
に入ってる処理が実行されなくなってしまいます。
この時に役に立つのがjquery-turbolinks
というgemです。こちらを参考にしてみてください。
Gemfile
に以下を追加する
Gemfile
gem 'jquery-turbolinks'
Bundle installする
ターミナル
$ bundle install
// bundleだけでも可
サーバーを再起動することを忘れずに。
app/assets/javascripts/application.js
に以下の行を加える
app/assets/javascripts/application.js
//= require jquery.turbolinks
この時、付け足す場所が重要らしく、//= require jquery
より後で、//= require turbolinks
より前に記述する。例えばこのような感じ。
app/assets/javascripts/application.js
//= require jquery
//= require jquery_ujs
//= require jquery.turbolinks
//= require turbolinks
//= require bootstrap
//= require_tree .
あとは、様々なイベントによって、readyの代わりに以下を使い分ける:
page:fetch
page:load
page:restore
page:change
イベントは他にもあるので、こちらを参考にしてください。