1

这可以动态加载 SASS 文件吗?

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

我想要像@import BRAND“application.sass”这样的东西。请告诉我怎么可能。谢谢。

4

2 回答 2

1

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

配置/初始化程序/brand.rb:

BRAND = 'mybrand'

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

$brand-color: steelblue;

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

@import '<%= BRAND %>';

body {
  background: $brand-color;
}

编辑

顺便说一句,在require使用 SASS 时,您不应该使用 Sprockets 的指令,正如Asset Pipeline 上的 Rails 指南所建议的那样:

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

于 2012-11-18T12:47:12.013 回答
0

您可以在您的 (haml) 布局文件中执行此操作,如下所示:

= stylesheet_link_tag BRAND, :media => 'all'

(或者如果您使用的是 ERB,则使用额外的 <% %>)。

于 2012-11-18T09:29:18.247 回答