質問: controllerが10個あり、対応するviewも同じ数だけある場合 6個のviewで使っているjavascriptを1個のファイルとしてapp/asset/javascript/以下に置きました。 その後、適用したいviewとは別の1個のviewがそのjavascriptの内容と競合してしまいそのviewのみ適用したくないという状況になりました。 こういう事が起こった場合どのようにするのがスマートでしょうか? 補足 起こっている競合は、datetimepickerが二重にかかってしまうという事です。 6個のviewでは共通のオプションでの適用だったのでまとめましたが、別の1個の方では別のオプションで適用しようとし、こちらは**app/asset/javascript/該当のcontroller名.js**に書きました。
回答: 特定のViewのみ読み込みたくないjavascriptということは、特定のViewでのみ読み込みたいと同じことなので、以下のように設定することで可能です。 現状が以下の構成だとします * app/assets/javascripts/ + application.js + 共通で読み込みたい.js + 特定のViewのみ読み込みたい.js これを以下のように変更します * app/assets/javascripts/ + application.js + common/ - 共通で読み込みたい.js + 特定のViewのみ読み込みたい.js app/assets/javascripts/application.jsを変更します ``` - //= require_tree . + //= require_tree ./common ``` これで、commonフォルダ以外の物は指定しないかぎり読み込まれなくなります。 特定のViewのview.html.hamlに以下を追記します ``` + javascript_include_tag '特定のViewのみ読み込みたい.js' ``` config/application.rbに以下を追記します ``` + config.assets.precompile += Rails.root + 'app/assets/javascripts/特定のViewのみ読み込みたい.js' ``` 以上で、目的を果たせるかと思います。 しかしながら、私は、「全てのページで常に読み込んでも問題ないようにjsを組む」のが一番スマートだと思います。