これを「正しく」実行したい場合、<html>
または<body>
タグにクラス名を付けて、CSS ファイルの内容をセレクターでラップすることは、それほど手間がかからない方法の 1 つです。たとえば、私は次のようなものを私のApplicationController
.
before_filter :body_class
def body_class
controller_name = self.class.name.gsub(/Controller$/, '')
if !controller_name.index('::').nil?
namespace, controller_name = controller_name.split('::')
end
@body_classes = ["#{controller_name.underscore}_#{action_name} ".downcase.strip]
@body_classes = ["#{namespace.underscore}_#{@default_body_classes.join}".strip] if !namespace.nil?
end
次に、私のレイアウトでは、これに似たものがあります
<body class="<%= @default_body_classes.join(' ') %>">
次に、すべてのスタイルシートの拡張子を.css.scss
. それらをすべて新しいapp/assets/stylesheets
ディレクトリに配置します。それらをすばやく含めるには(順序が間違っている可能性がありますが)、追加します
/*
* =require_tree .
*/
新しいapp/assets/application.css.scss
ファイルの先頭に。この 1 つのapplication.css
ファイルをレイアウトに含めるだけです。
<%= stylesheet_link_tag "application", :media => 'screen' %>
最後に、スタイルシートを調べて、各ドキュメント全体を適切なボディ クラスでラップします。たとえば、User::Admin
コントローラーのsignup
アクションに固有のスタイルシートがある場合、そのスタイルシート全体を次のようにラップします。
.user_admin.signup {
/* Your stylesheet's content here */
}
Sass は、ネストされたすべてのコンテンツに、そのアクションがレンダリングされるときにタグに.user_admin.signup
追加されるクラスを適切にプレフィックスとして付けます。<body>
あなたが探しているように、これは実際には中間的な修正ではないことを理解していますが、これと同様の手順に従うと、それほど努力せずに95%の方法を達成できるはずであり、「正しく」行われます.