在我的应用程序中,我有各种主题供用户从特定的网页中选择。这些主题仅在颜色和字体类型方面有所不同。所以为了不重复css声明,我创建了一个scss文件,其中包含常见的css声明ztheme.css.scss
,其中包含所有主题中的常见CSS样式。我拥有各种主题scss文件(例如silver.css.scss
,melon.css.scss
- 如下所示),仅使用为颜色和字体类型定义的变量值。在所有这些主题scss文件中,您可以在底部看到它将共同的ztheme.css.scss
导入为@import 'ztheme'
。因此,当这些主题文件被编译后,它们将具有适当的颜色和字体类型值的常见CSS样式。Rails4资产预编译失败
silver.css.scss
$nav_bg_color: #F6F6F6;
$page_font: 'Sintony', sans-serif;
$page_txt_color: #000033;
@import 'ztheme';
melon.css.scss
$nav_bg_color: #F2F6C6;
$page_font: 'Arial', verdana;
$page_txt_color: #628002;
@import 'ztheme';
ztheme.css.scss
body{
padding-bottom: 20px;
background: $nav_bg_color;
font-family: $page_font;
text-rendering: optimizelegibility;
color: $page_txt_color;
}
问题是,当我在Heroku和资产预编译揭开序幕部署此代码,然后将其在ztheme.css.scss
失败,因为它寻找在其中定义的变量的值。并抛出这个错误:
remote: rake aborted!
remote: Sass::SyntaxError: Undefined variable: "$nav_bg_color".
remote: /tmp/build_ded002611a0752bd96038a671fd8051c/app/assets/stylesheets/themes/ztheme.css.scss:9
但是你可以看到,ztheme
正在导入在每一个主题文件,所以当ztheme
将这些文件导入,这些zthemes的价值应该得到适当的填充,它不应该抛出Undefined variable
错误。
如何解决这个问题?
我有我的构建资产如下: