Css rails 3中特定于控制器的样式表:继承
首先,我是rails的新手。我正在rails网站上工作。它有三个控制器,即 应用程序控制器、静态页面控制器和用户控制器。它们在app/assets/stylesheets/中都有各自的css(scss)文件(application.css和users.css.scss) 除了静态页面和控制器之外,还有一个自定义的.css.scss用于总体布局或公共元素。我使用了前面提到的特定于控制器的样式表 我的问题是: 1) custom.css中的css规则是否适用于除我在单独的控制器css中明确定义的那些视图之外的所有控制器视图 2) 如果是,那么我在custom.css.scss和users.css.scss中都定义了一个规则 custom.css.scss-正文{背景色:color1;} users.css.scss-正文{背景色:color2;} 但静态页面、控制器和用户控制器中的视图仍显示背景色2。我哪里做错了?只有用户控制器中的视图必须显示color2,而静态页面控制器必须显示color1。这里并不能完全说明真相。它说: 您应该将控制器特有的任何JavaScript或CSS放在它们各自的资产文件中,因为这些文件可以仅为这些控制器加载,并带有诸如或之类的行 现在,您可以按照他们的建议执行操作,并为每个控制器加载特定的样式表,但它不能像他们建议的那样开箱即用。忽视了你必须做的几件事Css rails 3中特定于控制器的样式表:继承,css,ruby-on-rails,sass,Css,Ruby On Rails,Sass,首先,我是rails的新手。我正在rails网站上工作。它有三个控制器,即 应用程序控制器、静态页面控制器和用户控制器。它们在app/assets/stylesheets/中都有各自的css(scss)文件(application.css和users.css.scss) 除了静态页面和控制器之外,还有一个自定义的.css.scss用于总体布局或公共元素。我使用了前面提到的特定于控制器的样式表 我的问题是: 1) custom.css中的css规则是否适用于除我在单独的控制器css中明确定义的那
/=require_树。
指令,该指令保留不变,将加载文件夹中的所有其他资产。这意味着每个页面都将加载users.css,如果您像在他们的示例中那样添加控制器特定的样式表行,它将加载控制器样式表两次# in environments/production.rb
# either render all individual css files:
config.assets.precompile << "*.css"
# or include them individually
config.assets.precompile += %w( users.css static_pages.css )
// in application.css (or some other commonly loaded file)
background-color: $color1;
// in users.css.scss
body.controller-users {
background-color: $color2;
}
// and so on...
然后在布局中,将控制器名称添加到body类,如:
<body class="controller-<%= params[:controller] %>">
这样,您的样式将通过名称空间解析,而不仅仅是加载顺序。此外,使用此解决方案,您仍然可以继续加载单独的特定于控制器的样式表(如果需要),或者您可以忘记这一点,让所有内容都像默认情况那样编译到application.css中。将为每个页面加载所有样式,但只应用特定于控制器的样式。在Rails 4.x中 您必须在config/environment.rb中添加这些行 config.assets.precompile这是一个很好的答案,更重要的是,它需要一个良好的实践,这在社区中是普遍存在的,它显示了它的缺点,并提出了一个更好的替代方案。非常感谢!!第页(行动?)此的特定版本:,然后标记为(正确的IMHO)的副本。相关:
<body class="controller-<%= params[:controller] %>">