7
9

More than 3 years have passed since last update.

Rails JQuery 動かない

Last updated at Posted at 2019-12-13

JQueryはちゃんと書けている。ソースも更新されている。

しかし、狙い通りに動作しない。Javascriptのエラーもでてない。
単純にalert();とかconsole.log();とかやっても反応しない。

全く動かないわけではなく、ページを再読み込みしたときは狙い通りに動く。
ぐぬぬ。

理由はturbolinksだった。

application.html.erb
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>

turbolinksがあるとSPAのような動きをするらしい。(SPAよく知らないが)

Rails 4のturbolinksについて最低でも知っておきたい事
turbolinksの動作は、すごく大雑把に言うと以下の通りです。

  1. リンクのclickイベントをフック
  2. リンク先のページをXHRで取り寄せる
  3. レスポンスをDOM化
  4. 現在のページと取り寄せたページの外部JavaScriptファイルとCSSファイルが同一なら、titleとbodyを読み込んだページのもので置き換える

上記の理由で$(document).readyが発火しない。なるほど。

Rails5では書き方がまた違う

Rails5でjqueryを動かす方法

動いた。

変更前.js
$(function () {
  // 処理
});
変更後.js
$(document).on('turbolinks:load', function() {
  // 処理
});
7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9