2011-06-07 63 views
23

基本上我有一個結構,它在3.0.x中完美工作,現在又打破了undefined variable錯誤。SASS全局變量未被傳遞到局部文件

  • 泛音
    • _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.sass嗎? main.css.sass需要全局變量的點是什麼,如果它們不能用於你所需要的自身部分?

如果我的結構完全錯誤,請給我一個替代方案,我很樂意提供建議。

+0

「config.assets.precompile」 是你的朋友:-) [隨便看看這裏它真的幫了我!] [1] [1]:HTTP://計算器.com/questions/7134034/using-rails-3-1-assets-pipeline-to-conditionally-use-certain-css – 2011-09-13 09:34:26

回答

25

你不能使用//=require來包含像mixin和變量這樣的「動態」SASS,因爲這只是用來包含最「靜態」的東西(比如純CSS)。你必須@import你所有的文件在application.css.sass。 Railscasts在episode #268中提供了很好的解釋。

1

顯然你必須使用application.css.sass作爲清單,否則什麼都行不通。

基本上你可以分開一切,但他們需要從應用程序文件中調用,因爲範圍不共享。

如果你問我有點太強制執行...

+1

請您詳細說明「您必須使用...作爲清單」的含義嗎?我使用'application.css.sass'作爲我的主文件,我'@ import'所有其他文件,但是我仍遇到上述相同的問題。 – Marc 2012-01-23 17:38:56

+0

您正在使用的.sass文件名是.scss – raulriera 2012-01-23 18:53:54

+0

謝謝,這是一個錯字@raulriera – Draiken 2012-01-23 19:11:31

0

這是一個sass文件。在application.css.sass中使用@import而不是requirerequire適用於沒有導入系統的普通css或模板引擎。

2

原始主題有一個簡單的解決方案。你的應用程序和主要的css文件應該是scss文件。這意味着您可以使用已知語法:

/* 
*= require_self 
*= require main 
*/ 

In main。SCSS可以導入諧音是這樣的:

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

這些文件是青菜的文件,你可以從上海社會科學院;-)

2

偉大受益,我認爲我有同樣的問題,是什麼幫助被宣告@imports之前的變量。希望這可以幫助某人=)。