在rails 3.1中共享scss文件之间的mixin

时间:2011-09-10 20:45:49

标签: ruby-on-rails ruby-on-rails-3 sass

我正在尝试引用另一个文件(home.css.scss)中定义的mixin(home.css.scss)。我已经尝试将应用程序导入到家中但仍然出现“Undefined mixin”错误。

有没有办法自动导入我的所有文件,或者管理文件之间导入的最佳方法是什么?

2 个答案:

答案 0 :(得分:25)

我还没能跳到3.1,但使用Compass& Sass已经有一段时间了,我发现最好尝试与你的实际CSS生成sass分开管理mixin / definition sass。通过这种方式,mixin文件可以像代码库一样自由处理,包含在必要的地方,而不会重复生成CSS规则。

所以你可能有:

/* my-mixin-concern.scss */
$default_foo: 123px !default;

@mixin some-concern($foo: $default_foo) {
  // do something
}

/* application.scss */
$default_foo: 321px; // optionally, pre-set the default value before import.
@import 'my-mixin-concern';  
p { @include some-concern; }

/* home.scss */
@import 'my-mixin-concern';
body.home p { @include some-concern(9000px); }

通过这种方式,您可以显式导入每个scss文件的所有需求,类似于在代码库中执行此操作的方式。

答案 1 :(得分:0)

Pure Rails解决方案

第1步。重命名

application.css -> application.css.scss

第2步。重构

// application.css.scss

/*
 *= require_self
*/

@import "mixins.css.csss"
@import "project.css.scss"