JQueryはちゃんと書けている。ソースも更新されている。
しかし、狙い通りに動作しない。Javascriptのエラーもでてない。
単純にalert();とかconsole.log();とかやっても反応しない。
全く動かないわけではなく、ページを再読み込みしたときは狙い通りに動く。
ぐぬぬ。
理由はturbolinksだった。
application.html.erb
<%=javascript_pack_tag'application','data-turbolinks-track':'reload'%>turbolinksがあるとSPAのような動きをするらしい。(SPAよく知らないが)
Rails 4のturbolinksについて最低でも知っておきたい事
turbolinksの動作は、すごく大雑把に言うと以下の通りです。
- リンクのclickイベントをフック
- リンク先のページをXHRで取り寄せる
- レスポンスをDOM化
- 現在のページと取り寄せたページの外部JavaScriptファイルとCSSファイルが同一なら、titleとbodyを読み込んだページのもので置き換える
上記の理由で$(document).readyが発火しない。なるほど。
Rails5では書き方がまた違う
動いた。
変更前.js
$(function(){// 処理});変更後.js
$(document).on('turbolinks:load',function(){// 処理});