2

application.css の次の行には、ツリー内のすべての css ファイルが含まれていることを読みました

*= require_tree . 

私の混乱は、私が見つけたものから (間違っている場合は修正してください)、css ファイルをレンダリングするコントローラーと一致するときに css ファイルをロードする場合は、application.haml に次の行を追加する必要があることです。

    = stylesheet_link_tag params[:controller]

疑問 1: 本当にこの行を追加する必要がありますか? 慣習によって自動的に行われると思いました。(これに対する答えはイエスだと思います。この行を含める必要があります)

Doubt2: application.css は "require_tree ." によりすべての css ファイルをロードするため、他の css ファイルと何らかの競合や混乱を引き起こすのでしょうか?

疑問 3: require_tree を使用して、そのディレクトリ内のすべてのスケルトン ファイルをロードし、画面がレンダリングされるときに、特にコントローラー css をロードしたい場合はどうなるでしょうか。

例えば、

私は持っている:

  • アプリケーション.css
  • some_basic_styling.css
  • home.css.scss
  • 招待状.css.scss

私のapplication.cssには、すべてのcssファイルが含まれます(require_treeによる)。home.css はホーム コントローラーによって読み込まれることを意図しており、invitation.css は招待コントローラーによって読み込まれることになっています。これを確実にするために必要な手順は何ですか?

4

1 に答える 1

3

require_tree .アセット パイプラインを備えた Rails 3.1 には、app/assets/stylesheets/ 内のすべてのファイルをロードし、それを application.css にコンパイルするデフォルトの sprocket コマンドがあります。

コマンドは= stylesheet_link_tag params[:controller]基本的にこれをビューに出力します。

= stylesheet_link_tag :products製品コントローラから表示する場合。

これは、すべてのファイルを application.css にコンパイルするために必要なわけではありません。デフォルトでは、すべてのファイルが自動的に application.css にコンパイルされます。

コントローラーごとにスタイルシートを要求するユース ケースは、そうしない require_tree .場合です。基本的に、すべてを 1 つのスタイルシートにコンパイルする必要はありません。デフォルトとは逆です。

于 2012-08-08T00:23:14.813 に答える