Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
25
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@Terunaga

RailsでリロードしないとJavaScriptが起動しない時

 Rails4.2でJavaScriptを書いている時、最初のページ遷移ではJSが上手く起動せず、リロードすると起動することがあります。Rails4からデフォルトで使用できるturbolinksというgemが、問題を起こしているらしいです。Getでページ遷移する時、jQueryのreadyイベントが起きないため、例えば$(function(){})に入ってる処理が実行されなくなってしまいます。

 この時に役に立つのがjquery-turbolinksというgemです。こちらを参考にしてみてください。

Gemfileに以下を追加する

Gemfile
gem 'jquery-turbolinks'

Bundle installする

ターミナル
$ bundle install
// bundleだけでも可

サーバーを再起動することを忘れずに。

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 bootstrap
//= require_tree .

あとは、様々なイベントによって、readyの代わりに以下を使い分ける:
page:fetch
page:load
page:restore
page:change
イベントは他にもあるので、こちらを参考にしてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
25
Help us understand the problem. What are the problem?