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

我读到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应该由邀请控制器加载。 我需要采取哪些措施来确保这一点?

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

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

= stylesheet_link_tag :products从产品控制器查看的产品。

将所有文件编译为application.css 不需要这样做。 默认情况下,所有文件都自动编译到application.css中。

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