LoginSignup
42
47

More than 5 years have passed since last update.

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

Posted at

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

42
47
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
42
47