0

重複の可能性:
Rails 3.1アセットパイプライン:コントローラー固有のスクリプトをロードする方法は?

新しいコントローラーと関連するビューを作成すると、Railsはいくつかの空のビュー固有のアセットを生成します。次のコマンドを実行します。

rails generate controller home index

これにより、が生成さhome.css.scsshome.js.coffeeます。Railsを初めて使用したとき、私の最初の考えは、これらはそれぞれのビューでのみレンダリングされるように自動構成されるというものでした。そうではないことがわかりました。代わりに、デフォルトでは、すべてのスクリプトがすべてのビューでレンダリングされます。これは期待されていますか?これらのアセットをビュー固有にするための最良の方法は何ですか?

4

1 に答える 1

1

基本的な設定は、(本番環境では)単一のjsファイル(および単一のCSSファイル)が提供されることです。これは通常、キャッシュの観点からはより効率的ですが、最初のページの読み込みがわずかに遅くなる可能性があります。

これが多すぎる場合は、追加のマニフェストファイル(application.jsがデフォルトのファイル)を作成し、それらを個別にロードできます。たとえば、私が取り組んでいるアプリの1つには、消費者向けの部分との重複がほとんどないため、別のadmin.js/cssがあります。理論的には、各js / CSSファイルをマニフェストファイルとして扱うことができますが、各ページでjavascript_include_tagを呼び出す必要があります。

質問の根本的な理由が、特定のページにのみ添付したい動作があることである場合は、selectors / jsを十分に具体的にして、すべてのページへの読み込みを許容できるようにするか、(通常はこれを行います)コントローラーを追加します。ボディのアクション固有のクラスとそれを使用します。

于 2012-11-18T08:58:03.243 に答える