6

アセット パイプラインのトピックについては、Rails ガイドは、Rails がコントローラー固有の CSS ファイルにリンクできることを示唆しています。

stylesheet_link_tag params[:controller] 

Rails ガイドからの抜粋:

たとえば、ProjectsController を生成すると、Rails は新しいファイルを app/assets/javascripts/projects.js.coffee に追加し、別のファイルを app/assets/stylesheets/projects.css.scss に追加します。コントローラーに固有の JavaScript または CSS をそれぞれのアセット ファイル内に配置する必要があります。これらのファイルは、<%= javascript_include_tag params[:controller] %> または <%= stylesheet_link_tag params[ :コントローラー] %>. http://guides.rubyonrails.org/asset_pipeline.html#how-to-use-the-asset-pipeline

これは、Rails がアセット パイプラインにフォールバックできるようにする開発では問題なく機能します。ただし、本番環境では、スタイルシートがプリコンパイルされていないというエラーが表示されます。

私が読んだことから、次のように、独立したファイルとして明示したいアセットをプリコンパイル配列に追加する必要があります。

config.assets.precompile += ['admin.js', 'admin.css', 'swfObject.js']

上記の Rails ガイドの例に従ってリンクされたコントローラー固有のスタイルシートが必要な場合、プリコンパイル配列でそれぞれを列挙する必要がありますか?

4

1 に答える 1

6

簡単な答えは...はい。

ただし、アセットパイプラインを使用してセレクターを照合することもできることに注意してください。単純なcmsにも同様の設定を実装し、各コントローラーに独自の.cssと.jsを持たせたいと考えました。設定は次のようになります...

config.assets.precompile += ["*.css", "*.js")

コントローラに直接関係のないスタイルシートやスクリプトがたくさんある場合は、最善の解決策ではありません。私の場合、各コントローラーには非常に異なる.jsファイルが必要でした。

また、異なるアセットを2つまたは3つの相互に関連するグループにグループ化できる場合は、複数のマニフェストを作成してから、それらを明示的にリストすることを検討してください。

編集 アセットのプリコンパイルを設定する方法を決定しようとしている人のために、この回答を締めくくりたいと思います。

各アセットまたはマニフェストを明示的にプリコンパイルするだけでなく、プリコンパイルするすべてのファイルをアセットフォルダー内のフォルダーに配置し、同じワイルドカードマッチングを使用してそれらのアセットのみをコンパイルすることもできます。

例えば

config.assets.precompile += ['*.css', 'manifests/*.js']

マニフェストフォルダー内のすべてのcssシートと.jsファイルのみをコンパイルします。

同様に、assets.precomile正規表現を渡すことができます。したがって、事前にコンパイルしたいファイルに「pre_」を追加したい場合は、次のような一致を使用できます...

config.assets.precompile += [/^pre_\w*.(css|js)/i]

可能性は無限大です。すべてのアセットを事前にコンパイルする必要があるとは思わないでください。ほとんどのスクリプトとcssは、複数のインスタンスで他のスクリプトと組み合わせて使用​​するように作成する必要があるため、おそらく役に立たないでしょう。アプリケーションへの高度に専門化されたスクリプト。*。

于 2012-07-18T14:53:56.653 に答える