

railsで簡単なアプリを作ったのですが、javascriptが正常に読み込まれる場合とそうでない場合があることに気がつきました。初回読込では読まれなくて、再読み込みをすると、javascriptが読み込まれています。

`$ rails s`で現象を再現してログを読んでみると、あるページでは次のようになっていました。

[code]

    Started GET "/customers/sign_up" for 127.0.0.1 at 2014-12-21 19:19:17 +0900
    Processing by Customers::RegistrationsController#new as HTML
      Rate Load (0.2ms)  SELECT  "rates".* FROM "rates"   ORDER BY "rates"."id" ASC LIMIT 1
      CACHE (0.0ms)  SELECT  "rates".* FROM "rates"   ORDER BY "rates"."id" ASC LIMIT 1
      Rendered admin/_header.html.erb (3.3ms)
      Rendered customers/registrations/new.html.erb within layouts/application (9.2ms)
      Rendered layouts/_footer.html.erb (0.0ms)
    Completed 200 OK in 442ms (Views: 440.3ms | ActiveRecord: 0.2ms)
    
[/code]

以上のみですが、再読み込みをすると

[code]

    Started GET "/customers/sign_up" for 127.0.0.1 at 2014-12-21 19:20:05 +0900
    Processing by Customers::RegistrationsController#new as HTML
      Rate Load (0.1ms)  SELECT  "rates".* FROM "rates"   ORDER BY "rates"."id" ASC LIMIT 1
      CACHE (0.0ms)  SELECT  "rates".* FROM "rates"   ORDER BY "rates"."id" ASC LIMIT 1
      Rendered admin/_header.html.erb (1.5ms)
      Rendered customers/registrations/new.html.erb within layouts/application (8.5ms)
      Rendered layouts/_footer.html.erb (0.0ms)
    Completed 200 OK in 403ms (Views: 401.2ms | ActiveRecord: 0.2ms)
    
    Started GET "/assets/metronic/components.css?body=1" for 127.0.0.1 at 2014-12-21 19:20:06 +0900
    
    Started GET "/assets/metronic/plugins.css?body=1" for 127.0.0.1 at 2014-12-21 19:20:06 +0900
    
    Started GET "/assets/metronic/default.css?body=1" for 127.0.0.1 at 2014-12-21 19:20:06 +0900
    
    以下、ログが続く
    
[/code]

となっていて、/assets以下を読み込んでいます。
基本的には当たり前のように読み込まれると思っていたのですが、なぜこのような挙動になるか不明です。どなたかご教示いただけないでしょうか。


CC BY-SA 3.0
2014-12-21T10:39:17.787
2322
2014-12-21T12:54:23.950
2014-12-21T11:05:57.343
33
303
question
javascript ruby-on-rails
Railsがassets以下を読み込まない場合について


「初回読込み」の表現ですが、他のページからリンクを踏んで飛んできていると思って大丈夫ですか？（直接リンクをブラウザのアドレスバーに入れると CSS
も読み込まれると思います）。

であれば、これは `Rails` の Turbolinks 機能だと思います。

詳しくは[参考文献](http://kray.jp/blog/must-know-about-
turbolinks/)を読んでいただければと思いますが、高速化のために Rails 4 以降では Turbolinks
という機能がデフォルトでオンになります。

この機能はリンクをクリックされた際に全ページを読み込むのではなく、`body` タグ内のものを入れ替える、ということを行うため、CSS や
JavaScript を再度サーバに取りにいきません。


CC BY-SA 3.0
2014-12-21T12:54:23.950
2327
2014-12-21T12:54:23.950
41
2322
answer