railsで特定のjsを読み込ませるようにする設定

全部は入らないから、このページだけjsを読めるようにしたい!って思うことは多いはずです。

ちなみに、自分はturbolinksを捨ててます。

イベントが発火しないとか、しんどいので・・・

準備

まずは、application.jsから全体を読み込むような設定をなくします。

application.js

//= require_tree . ←削除

//= require_tree .が付いていると、js配下のものを全てコンパイルするので、これを外します。

次に、コンパイルするファイルを指定します。

config/initializers/assets.rb

# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
Rails.application.config.assets.precompile += %w(
  admin.js
)

これはadmin.jsというものは事前にコンパイルするように設定します。

jsを読み込みたい場所にこのtagをつけます。

名前は好きにしてください。

= yield :javascript

読み込みたいviewにcontent_forで呼び出すようにします。

- content_for(:javascript)
  = javascript_include_tag 'admin'

これでadmin.js は読み込みされるようになります。

簡単な説明ですが、他にもやり方があると思いますが、これがしっくりきました。