2

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

*= require_tree . 

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

    = stylesheet_link_tag params[:controller]

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

疑问2:由于 application.css 由于“require_tree”而加载了所有 css 文件,是否会导致与其他每个 css 文件发生某种冲突/混乱?

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

例如,

我有:

  • 应用程序.css
  • some_basic_styling.css
  • 主页.css.scss
  • 邀请.css.scss

我的 application.css 将包含所有的 css 文件(由于 require_tree)。home.css 应该由 home 控制器加载,invitation.css 应该由邀请控制器加载。我需要哪些步骤来确保这一点?

4

1 回答 1

3

在带有资产管道的 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 .。基本上,您不希望在一个样式表中编译所有内容。它与默认值相反。

于 2012-08-08T00:23:14.813 回答