167
170

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsでページ遷移時に何故かJavaScriptが起動しない時

Last updated at Posted at 2014-08-17

症状

Rails4でJavaScript書いてる時に「リロードするとJS走るんだけれど、普通のページ遷移(特にgetリクエストの時)にJSが走らない。ベタ書きしただけのalert("hello")すら出てこない」という状況に遭遇することがあります。

HTML見てもちゃんとJSファイルがロードされているし、動かない理由が無いしリロードすると走る。でもリンクをクリックして移動してる時には何故かJavaScriptが起動しない。

原因

可能性の一つとしてturbolinksを疑ってみましょう。

turbolinksはRails4の高速化の為に導入された機能で、リンクを踏んだ時にページを普通にロードする代わりにJavaScriptでAjaxして何か上手いことしてくれる機能です。
でもコイツが動いてるとデフォルトではjQueryが思い通りに動かなくなる事があります。

解決策

そういう時はここに書いてある方法に従って以下の変更を試してみましょう。

Gemfileに以下の行を足す。

Gemfile
gem 'jquery-turbolinks'

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_tree .

Bundle Updateを実行する

Gemfileを更新した場合もbundleし直さないと反映されません。

Rails Serverを再起動する

大事です。忘れててハマってました。

以上、詳しい内容は書いてないですが参考になれば幸いです。
(そのうちRailsの標準に入るかturbolinksのアップデートで解決するんじゃないかという気もする)

167
170
1

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
167
170

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?