Rails:Application.css是否加载所有css.scss文件?

时间:2012-04-29 10:06:51

标签: ruby-on-rails layout sass

我读到application.css中的以下行包含树中的所有css文件

*= require_tree . 

我的困惑是,根据我的发现(如果我错了请纠正我),我需要在我的application.haml中添加以下行,如果我想要在与控制器渲染匹配时加载css文件它们:

    = stylesheet_link_tag params[:controller]

疑惑1:我真的需要添加这一行吗?我认为这是按惯例自动完成的。 (我猜这个答案是肯定的,我需要包括这一行)

疑问2:由于application.css由于“require_tree。”而加载了所有css文件,会导致某些类型的冲突/搞乱其他每个css文件?

疑问3:如果我想使用require_tree加载该目录中的所有骨架文件,并且在屏幕呈现时,特别是加载控制器css,该怎么办?

例如,

我有:

  • application.css
  • some_basic_styling.css
  • home.css.scss
  • invitation.css.scss

我的application.css将包含所有css文件(由于require_tree)。 home.css意味着由家庭控制器加载,并且invitation.css应该由邀请控制器加载。我需要采取哪些措施来确保这一点?

1 个答案:

答案 0 :(得分:3)

在带有资产管道的Rails 3.1中,有一个默认的sprocket命令require_tree .,用于加载app / assets / stylesheets /中的所有文件,并将其编译为application.css。

= stylesheet_link_tag params[:controller]命令基本上将此输出到您的视图中。

如果从产品控制器查看,请

= stylesheet_link_tag :products

这是 not ,需要将所有文件编译到application.css中。默认情况下,所有文件都会自动编译到application.css中。

如果 require_tree .,则每个控制器需要样式表的用例。基本上,您不希望在一个样式表中编译所有内容。这与默认情况相反。