Railsでvendor/assets/javascripts以下にあるファイルを特定のページでのみ使用する

  • 41
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

AssetPipelineについて

RailsのAssetPipelineは、JavaScriptや、cssの結合・圧縮を自動でやってくれて便利だが、以下の点が気になった。

  • 特定のページでしか使用しないPlugin等のファイルはapplication.jsで管理したくない。

結合・圧縮をしているとはいえ、不要なjsファイルまで一緒に読むこむのは重くなる原因になり、微妙だなと感じた

特定ページでのみ特定のJavaScriptを読み込む

かといって、vendor/assets/javascripts/hoge.jsなどを作成し、
javascript_include_tagで読み込もうとすると、assetprecompileで読み込めないとエラーが出るので、
config/initializers/assets.rbを作成し、そこにファイルパスを追加する。

  1. $ vim config/initializers/assets.rb

  2. config/initializers/assets.rb
    Rails.application.config.assets.precompile += [
        "hoge.js",
    ]
    

追加後、Serverを再起動し、javascript_include_tagで以下の様に追加する
1. $ vim app/views/layouts/application.html.erb

  1. app/views/layouts/application.html.erb
    ....
    
    <%= javascript_include_tag 'hoge.js', 'data-turbolinks-track' => true %>
    ....
    

ページのソースを確認すると、hoge.jsがapplication.jsとは別に読み込まれていることが確認出来るはず。

参考

The Asset Pipeline — Ruby on Rails Guides