Ruby on rails 3 未将SASS全局变量传递给partials

Ruby on rails 3 未将SASS全局变量传递给partials,ruby-on-rails-3,sass,assets,Ruby On Rails 3,Sass,Assets,基本上,我有一个结构,过去在3.0.x中工作得很好,现在它因未定义变量错误而中断 分部 _base.css.sass _header.css.sass main.css.sass application.css.sass 应用程序.css.sass: //=require 'main' @import 'partials/base' @import 'partials/header' main.css.sass: //=require 'main' @import 'partial

基本上,我有一个结构,过去在3.0.x中工作得很好,现在它因
未定义变量
错误而中断

  • 分部
    • _base.css.sass
    • _header.css.sass
  • main.css.sass
  • application.css.sass
应用程序.css.sass

//=require 'main'
@import 'partials/base'
@import 'partials/header'
main.css.sass

//=require 'main'
@import 'partials/base'
@import 'partials/header'
非常简单的东西

我在
\u header.css.sass上得到一个错误
因为它使用在
\u base.css.sass

我以前没有遇到过这个错误,这对我来说毫无意义,因为我们在导入
\u base.css.sass
的同一上下文中导入了
\u header.css.sass
上的那些变量

我是否也必须在每个部分上导入
\u base.css.sass
? 如果不能在您需要的部分中使用全局变量,那么
main.css.sass
需要全局变量有什么意义


如果我的结构完全错误,请给我一个替代方案,我希望得到建议。

显然,您必须使用
应用程序.css.sass
作为清单,否则什么都不起作用

基本上,您可以将所有内容分离,但需要从应用程序文件中调用它们,因为作用域不是共享的


如果你问我,有点太强了…

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

您不能使用
//=require
来包含“动态”SASS内容,如mixin和变量,因为它只用于包含最“静态”的内容(如纯css)。您必须在
application.css.sass
中导入所有文件。Railscasts对此提供了很好的解释。

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

/*
 *= require_self
 *= require main
 */
在main.scss中,您可以像这样导入分部:

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

这些文件是sass文件,您可以从sass的伟大之处获益;-)

我想我也遇到了同样的问题,帮助我的是在@imports之前声明变量。希望这对某人有帮助=)。

“config.assets.precompile”是你的朋友:-)[看看这里,这对我真的很有帮助!!!][1][1]:你能详细说明一下“你必须使用…作为清单”的意思吗?我正在使用
application.css.sass
作为我的主文件,在那里我导入了所有其他文件,但我仍然遇到了如上所述的相同问题。您使用的是.sass,文件名是.scssThank,这是一个输入错误@raulrieraWell,它现在对我起了好几次作用。为了使声明的变量和mixin在同一个文件上工作,必须使用sass而不是链轮导入它们@MarcI正在使用sass import语句,但在预编译(使用Heroku)时,这些变量在其他文件中不可用。我通过导入sass文件以及每个其他sass文件中的变量暂时“修复”了这个问题,但这远不是一个理想的解决方案。