我正在将应用程序从rails 3.0升级到3.2,我的一些scss代码存在问题。 stylin.css包含:
/*
= require_self
= require_tree .
*/
stylin.css.scss包含:
@import "palette";
@import "round";
@import "html_elements";
@import "graph";
@import "menu";
@import "button";
@import "pop_up";
@import "basic_abrev";
更新styling.css时,会导入“palette”,但不会导入任何其他内容。因此,加载第一页时出现以下错误:
Undefined mixin 'round_corners'
我认为这是因为'round.css.scss'的顶部包含以下内容:
@mixin round_corners($radius: 8px) {
border-radius: $radius;
-moz-border-radius: $radius;
-webkit-border-radius: $radius;
}
如果没有传递的变量,默认值为8px。在下面的例子中,'20px'被传递给mixin。
@include round_corners(20px);
这在3.0中有效。这不再可能吗?如果没有,我将不得不创建许多mixins或停止使用混合/包含功能来圆角。
感谢。
答案 0 :(得分:1)
我发现了here:
如果要使用多个Sass文件,通常应使用Sass @import规则而不是这些Sprockets指令。使用Sprockets指令,所有Sass文件都存在于它们自己的范围内,使得变量或mixin仅在它们所定义的文档中可用。
我发现了here:
当使用Sprockets 2.x和Sass时,你最终会遇到一个非常大的问题。 // = require指令不允许在文件之间共享Sass mixins,变量等。
找到此here:
Sprockets提供了一些放在注释中的指令,名为require,require_tree和require_self。请勿在您的SASS / SCSS文件中使用它们。它们非常原始,与Sass文件不兼容。相反,使用Sass的原生@import指令,sass-rails已经定制,可以与rails项目的约定集成。
当我从stylin.css.scss文件中删除此(sprockets命令)时,一切正常。
/*
= require_self
= require_tree .
*/