背景
Turbolinksが原因でエラーが起きることが数回あったため、どういったものなのかを調べて自分なりにまとめました。備忘録として使います。
Turbolinksとは
Turbolinksは Asset Pipeline を活用しているアプリケーションにおいて画面遷移を高速化するライブラリ。
特徴
・ デフォルトで(プロジェクト生成時点で)有効になっている。
・ Turbolinks を導入すると Javascript のイベント発生タイミングが異なる。
・turbolinksでページをロードすると、jQueryのreadyイベントとDOMContentLoadedベントが発火しない。
代わりにいくつかイベントが用意されている。
page:fetch ページ読み込み開始
page:receive ページ読み込み完了(parse前)
page:change ページ更新完了
page:load 全ての処理終了
・aタグのリンクをクリックした時の遷移をajax化して画面遷移なしにページ遷移する。
・clickイベントの挙動を変えている
・・・etc
たくさんの特徴を持っており便利な部分があるがその反面使うのはしっかり理解していないと難しそう。。
Turbolinksを無効化する方法
もしもどうしても挙動がおかしくなる、turbolinksを消すとうまくいくといった場合は無効化してみましょう。
1.Gemfile から「gem ’turbolinks’」を削除する。
gem ’turbolinks’ # この行を削除する
2.app/assets/javascripts/application.js から「//= require turbolinks」を削除する。
//= require turbolinks //この行を削除する
3.app/views/layouts/application.html.erb の javascript_include_tag や stylesheet_link_tag から「"data-turbolinks-track" => true」を削除する。
参考
6.Turbolinks
https://www.techscore.com/tech/Ruby/rails-4.0/turbolinks/
Rails 4のturbolinksについて最低でも知っておきたい事
https://kray.jp/blog/must-know-about-turbolinks/
Turbolinksを調べてみた
https://gist.github.com/saboyutaka/8727377