如果您想“正确”地做到这一点,那么无需花费大量精力的一件事就是在您的<html>
or<body>
标记上放置一个类名,并使用选择器包装您的 CSS 文件的内容。例如,我在我的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
文件的顶部。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% 的工作,并且它将“正确”完成。