2

我正在开发一个 Rails 4 项目,我使用 Sass 和 Sass 的 @import 将多个 css 合并为一个。它可以正常工作,但如果我对 mixins ( _mixins.css.scss) 使用新的部分并仅在 @import this inmain.css.scss并使用 mixins 之后添加的任何其他文件_webapp.css.scss

    @import "bootstrap/bootstrap";
    @import "responsive/mega_menu";
    @import "responsive/mixins";
    @import "responsive/webapp";

Rails 预编译过程无法找到“ responsive/mixins”并给出错误_webapp.css.scss

Sass::SyntaxError: Undefined mixin 'mixin_name'.

这里mixin_name定义在responsive/mixins

4

3 回答 3

2

If your file is named mixins.css.scss, then you can only import it when it is called as mixins.css, since SASS tries to interpret the @import statement. If there is no extension, SASS expects it to be [filename].scss. You are trying to import [filename].scss while your name is [filename].css.scss. So try:

@import "responsive/mixins.css";
于 2014-11-11T15:42:45.567 回答
1

如果除 main.css.scss 之外的样式表使用来自 mixin 部分的 mixin,那么您也必须在其中导入它。所以看起来你需要在你的 webapp 部分中导入 mixins。

于 2014-11-11T15:36:26.357 回答
0

对我来说,这听起来像是一个资产管道问题。来自Rails 文档

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

你确定你在某处没有 sprocket 指令,需要responsive/webapp(甚至隐含在 a 中require_tree)?

想到的另一种可能性是这个未定义的混合错误实际上可能在它被导入之前被调用。你确定你没有在某个地方使用那个mixinmega_menu吗?

于 2014-11-11T16:22:23.370 回答