我正在开发一个Rails 4项目,我使用Sass和Sass的@import将多个css合并为一个。它工作正常,但如果我在mix _mixins.css.scss
中使用新的部分(main.css.scss
)并且仅在_webapp.css.scss
中导入此内容并且使用mixin,则在 @import "bootstrap/bootstrap";
@import "responsive/mega_menu";
@import "responsive/mixins";
@import "responsive/webapp";
之后添加任何其他文件
responsive/mixins
Rails预编译过程无法找到" _webapp.css.scss
"并在Sass::SyntaxError: Undefined mixin 'mixin_name'.
mixin_name
此处responsive/mixins
在{{1}}
答案 0 :(得分:1)
如果main.css.scss以外的样式表使用了mixin partial中的mixins,那么你也必须在其中导入它。因此,您似乎需要在webapp部分中导入mixins。
答案 1 :(得分:1)
如果您的文件名为mixins.css.scss
,那么您只能在调用mixins.css
时将其导入,因为SASS会尝试解释@import语句。如果没有扩展名,SASS预计它为[filename].scss
。您的名字为[filename].scss
时,您尝试导入[filename].css.scss
。所以试试:
@import "responsive/mixins.css";
答案 2 :(得分:0)
这听起来像是一个资产管道问题。来自the Rails docs:
如果要使用多个Sass文件,通常应使用Sass @import规则 而不是这些Sprockets指令。使用Sprockets指令,所有Sass文件都存在于其中 他们自己的范围,使变量或混合仅在他们定义的文档中可用。
你确定在某个地方没有sprocket指令,需要responsive/webapp
(甚至隐含在require_tree
中)?
另一种可能的想法是,这个未定义的mixin错误在导入之前实际上可能被称为。你确定你没有在mega_menu
中使用那个mixin吗?