如何在Rails SASS中动态导入文件?

时间:2012-11-18 09:17:00

标签: ruby-on-rails ruby sass

是否可以动态加载SASS文件?

假设我在Rails Initializer BRAND中声明了一个全局常量。我想要的是,导入一个具有常量BRAND中指定名称的SASS文件。

我想在“application.sass”中找到类似@import BRAND的内容。请告诉我怎么可能。感谢名单。

2 个答案:

答案 0 :(得分:1)

您可以将多个预处理器与资产管道配合使用,从而在SASS处理器发挥作用之前使用ERB。为此,只需将.erb附加到要预处理的文件的文件名即可。例如:

配置/初始化/ brand.rb:

BRAND = 'mybrand'

应用程序/资产/样式表/ _mybrand.css.scss:

$brand-color: steelblue;

应用程序/资产/样式表/ main.css.scss.erb:

@import '<%= BRAND %>';

body {
  background: $brand-color;
}

修改

顺便说一下,在使用SASS时,不应使用Sprockets'require指令,如Rails Guide on the Asset Pipeline所示:

  

如果你想使用多个Sass文件,你通常应该使用   Sass @import规则而不是这些Sprockets指令。运用   Sprockets指令所有Sass文件都存在于自己的范围内,   使变量或混合仅在文档中可用   在。中定义。

答案 1 :(得分:0)

你可以在你的(haml)布局文件中这样做:

= stylesheet_link_tag BRAND, :media => 'all'

(如果使用ERB,则使用额外的&lt; %%&gt;)。