1

我正在将应用程序从 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";

当 style.css 更新时,“调色板”被导入,但没有其他任何东西被导入。因此,在加载第一页时出现以下错误:

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 中有效。这不再可能了吗?如果没有,我将不得不创建大量 mixin 或停止使用混合/包含功能来圆角。

谢谢。

4

1 回答 1

1

我在这里找到了这个:

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

我在这里找到了这个:

将 Sprockets 2.x 与 Sass 一起使用时,您最终会遇到一个相当大的问题。//= require 指令不允许在文件之间共享 Sass mixins、变量等。

在这里找到这个:

Sprockets 提供了一些指令,这些指令放置在名为 require、require_tree 和 require_self 的注释中。不要在你的 SASS/SCSS 文件中使用它们。它们非常原始,不能很好地处理 Sass 文件。取而代之的是,使用 sass-rails 定制的 Sass 的原生 @import 指令以与您的 rails 项目的约定集成。

当我从 stylin.css.scss 文件中删除这个(链轮命令)时,一切正常。

/*
= require_self
= require_tree .
*/
于 2012-10-23T23:44:00.057 回答