LoginSignup
57
48

More than 5 years have passed since last update.

Railsでページ読み込みしないとjsが効かないのを解決する方法

Posted at

今回陥った事象

aタグやlink_toメソッドでページ遷移するとjsが効いていない。ページをリロードするとjsが効いている。

ググった結果

turbolinksの仕業(おかげ?)らしい。

tubolinksの役割

  • TurbolinksはRails4.0からデフォルトで導入されたgem
  • railsアプリケーションを 簡単に pjaxっぽくすることが出来る。
  • ajaxとhistoryAPI(popState, pushState)を利用して画面遷移
  • Turbolinksで遷移する場合は、titleとbodyとcsrfトークンを変更する
  • csrfトークンは変更された場合のみ
  • js, cssの読み込みを初回時に行い次回以降の読み込み処理を省略することで高速化する。

解決方法

link_toにdata: {"turbolinks"=>false}を指定してあげるとturbolinkによるAjaxを無効にでき、jsが読み込まれるようになる。

link_to "HOME", root_path, data: {"turbolinks" => false}

turbolinksを無効にしたくない方はこちらを参考に

参考

  1. Rails 5.0でlink_toでturbolinkを無効にする法
  2. 【Ruby】【Rails】link_toで遷移した後、JavaScriptが動かない場合
  3. Turbolinksをオフしないためにやった事
57
48
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
57
48