【问题标题】:passing a variable to a scss 'mixin' worked in rails 3.0 but not in 3.2将变量传递给 scss 'mixin' 在 rails 3.0 中有效,但在 3.2 中无效
【发布时间】:2012-10-31 17:53:54
【问题描述】:

我正在将应用程序从 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 或停止使用混合/包含功能来圆角。

谢谢。

【问题讨论】:

    标签: ruby-on-rails-3.1 ruby-on-rails-3.2 sass


    【解决方案1】:

    我找到了这个here

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

    我找到了这个here

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

    找到这个here

    Sprockets 提供了一些放置在 cmets 内部的指令,称为 require、require_tree 和 require_self。不要在你的 SASS/SCSS 文件中使用它们。它们非常原始,不能很好地处理 Sass 文件。相反,请使用 sass-rails 定制的 Sass 原生 @import 指令以与您的 Rails 项目的约定集成。

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

    /*
    = require_self
    = require_tree .
    */
    

    【讨论】:

      猜你喜欢
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      • 2017-10-31
      相关资源
      最近更新 更多