2011-06-18 53 views
11

我在默認的SASS設置下使用Rails 3.1RC4。我有以下文件SASS全局變量+ Rails 3.1

application.css.scss

/* 
* This is a manifest file that'll automatically include all the stylesheets available in this directory 
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at 
* the top of the compiled file, but it's generally better to create a new file per style scope. 
*= require_self 
*= require_tree . 
*/ 

_variables.css.scss

$var1 : somevalue; 
... 

site_layout.css.scss

@import "variables"; 
... Some Sass Code 

但我無法訪問site_layout中_variables.css.scss中定義的變量。我究竟做錯了什麼? Rails顯然是找到變量文件,因爲它不會拋出「找不到文件」錯誤,如果我更改了導入文件名,它會這樣做。這些變數仍然沒有結轉。

任何想法?

謝謝!

+0

我對存儲在部分中的mixin有完全相同的問題。你有沒有想出一個解決方案? – LandonSchropp

+0

不,我沒有。現在我註釋掉了我的application.css.scss中的require語句,並@手動輸入了我所有其他的sass文件。這工作正常,但希望這只是一個臨時解決方案。 – Denny

回答

3

這個問題似乎與最新版本的導軌&鏈輪固定。在你的gemfile中:

gem 'rails', :git => "git://github.com/rails/rails.git", :branch => "3-1-stable" 
+0

太棒了。感謝您發佈您的解決方案。 – LandonSchropp

-3

您的問題的第一部分(application.css.scss代碼段)在這裏似乎沒有任何關聯,因爲它只是註釋掉的代碼,所以我會跳過該部分。

對於第二個代碼片段,我不相信SASS設置爲導入一個「部分」,就像你在這裏做的那樣。你會更好做這樣的事情:

_variables.scss(從更名_variables.css.scss):

$var1: somevalue; 

注意,在你的文件名中的下劃線不需要像這將是一個Ruby部分。你可以很容易,只要你改變import語句@import "variables";

site_layout.scss

@import "_variables"; 

.test_thingy { 
    color: $var1; 
    } 

,這將產生一個site_layout.css(從site_layout.css.scss更名),將其命名爲variables.scss包含以下代碼替換的文件:

.test_thingy { 
    color: somevalue; } 

請注意,不需要具有文件n像filename.css.scss一樣,你會用HAML/ERB文件。只需將文件命名爲您想要的文件即可。例如,filename.scss將導致SASS自動生成名爲filename.css的CSS文件。

+0

'application.css.scss'文件確實有相關性。評論代碼是您配置Sprockets的地方。您的解決方案的其餘部分也不適用於我。 – LandonSchropp

+0

我不認爲這是正確的。下劃線是一種定義sass部分的方法,如下所述:http://sass-lang.com/tutorial.html。 filename.css.scss是Rails 3.1的默認文件名,所以我會堅持。我想你可能會誤解。這與一般的Sass無關,特別是Rails 3.1。 – Denny

+0

@ helixed,不知道爲什麼它不適合你,但我的答案已經過測試。 –