SASS全局变量未传递给partials

时间:2011-06-07 17:43:16

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

基本上我有一个曾经在3.0.x中完美运行的结构,现在它因undefined variable错误而中断。

  • 分音
    • _base.css.sass
    • _header.css.sass
  • main.css.sass
  • application.css.sass

application.css.sass

//=require 'main'

main.css.sass

@import 'partials/base'
@import 'partials/header'

非常简单的东西。

我在_header.css.sass上收到错误 因为它使用_base.css.sass

上定义的变量

之前我没有这个错误,对我来说没有任何意义,因为我们在导入_base.css.sass的相同上下文中导入_header.css.sass上的变量。

我是否还必须在每个部分导入_base.css.sassmain.css.sass如果不能在你需要的部分中使用全局变量,那么它有什么意义呢?

如果我的结构完全错误,请给我一个替代方案,我喜欢建议。

5 个答案:

答案 0 :(得分:26)

你不能使用//=require来包含“动态”SASS之类的东西,比如mixins和变量,因为它只用于包含最“静态”的东西(比如纯CSS)。您必须@import application.css.sass中的所有文件{{1}}。 Railscasts在episode #268中提供了很好的解释。

答案 1 :(得分:2)

原始主题有一个简单的解决方案。您的应用程序和主要css文件应该是scss文件。这意味着您可以使用已知的语法:

/*
 *= require_self
 *= require main
 */

在main.scss中,你可以像这样导入部分:

@import 'partials/base'
@import 'partials/header'

这些文件是sass文件,您可以从SASS的优点中受益; - )

答案 2 :(得分:2)

我认为我遇到了同样的问题以及在@imports之前声明变量的帮助。希望这有助于某人=)。

答案 3 :(得分:1)

显然你必须使用application.css.sass作为清单,否则什么都不会有效。

基本上你可以分开所有东西,但是需要从应用程序文件中调用它们,因为范围不是共享的。

如果你问我,有点执行......

答案 4 :(得分:0)

这是一个sass文件。使用@import中的application.css.sass代替requirerequire适用于没有导入系统的普通css或模板引擎。