针对不同动作的不同样式表

时间:2015-03-22 21:38:40

标签: html css ruby-on-rails asset-pipeline erb

我们说我有一个会话控制器,我有两个动作:menu和new。

我为每个操作都有不同的样式表和html文件:

menu.css.scss
new.css.scss

不幸的是,当我加载每个网页时,它使用两个css文件。我怎么能停下来?

2 个答案:

答案 0 :(得分:1)

这是Rails的工作方式(它将样式表一起编译成一个stylesheet.css),使每个动作使用单个样式的最简单方法是在每个动作的html视图中为父div添加一个id。然后将其声明为样式表中的父级。

<div id="menu"...>

<div id="new"...>

并在menu.css.scss中添加此

#menu {
 .your_class_details_here {

 }
 .next_style_here {

 }

}
new.css.scss

中的

#new {
 .your_details_here {

 }
 .next_style_here {

 }

}

这样,这些样式不会在其他视图之间共享。

答案 1 :(得分:1)

我在这里找到了问题的答案:http://theflyingdeveloper.com/controller-specific-assets-with-rails-4/

我所要做的就是从我的//= require_tree .和我application.js

中移除*= require_tree. application.css

然后我在我的config/initializers/assets.rb

中预编译了它们
Rails.application.config.assets.precompile += %w( menu.css )
Rails.application.config.assets.precompile += %w( new.css )