2014-07-16 96 views
1

我在Rails應用程序中使用bootstrap-sass。到目前爲止,一切工作正常,但我只是試圖導入另一個使用引導變量的第三方sass文件,它不能看到它們。如何使一個Bootstrap sass變量對另一個導入的sass文件可見?

在我application.css.scss

*= require bootstrap_local 

bootstrap_local.css.scss

@import "bootstrap"; 
@import "bootstrap-social"; 

當我做一個頁面的訪問,我得到一個Rails錯誤

Undefined variable: "$line-height-computed". 
(in .../app/assets/stylesheets/bootstrap-social.scss:11) 

通過bootstrap-social.scss所需的變量定義以前導入的bootstrap文件(實際上它在它包含的部分中定義)。

據我瞭解,這應該工作,因爲bootstrap_local需要,這意味着它的一切編譯集中在一個範圍內,所以一切進口bootstrap_local被視爲是一個大文件。也許我有這個錯誤?

如果我將@import "bootstrap";丟到bootstrap-social.scs那麼它工作正常。但我不應該這樣做,所以我要麼做錯了什麼,要麼我的設置存在一些錯誤配置。

我需要做些什麼來解決這個問題?

寶石:

  • 引導 - 薩斯-3.1.1.1
  • 青菜護欄-4.0.3

系統:

  • 的Rails 4.0.1
  • ruby​​ 2.0.0p247(2013-06-27修訂號41674)[x86_64-linux]

Bootstrap Social是一組社交登錄基於自舉和字體真棒純CSS製成的按鈕。)

+0

可能的重複:http://stackoverflow.com/questions/17976140/false-positive-undefined-variable-error-when-compiling-scss – cimmanon

+0

我讀過。特別是[this](http://stackoverflow.com/a/17976934/712506)其中提到使用下劃線前綴重命名該文件,但它沒有區別。但我會再去一次,但是... – starfry

回答

0

在問題中所描述的問題可以通過改變要解決的application.css.scss清單以使用import而不是require

@import "bootstrap_local"; 

還需要從清單中刪除任何require_tree .,因爲它本來需要bootstrap_local文件,因爲它位於其路徑中。

經過反思,清單中沒有require tree .可能是明智的,因爲它可以防止包含不需要的文件。我只有它在那裏,因爲它在默認情況下在新的Rails項目中存在(require_self也是如此;它不會將它放在清單中)。

在談到關於用下劃線前綴的文件中的建議,這是在你不需要的文件,如你問題bootstrap-social,是一個編譯成一個單獨的CSS文件做一件好事。所以,我最終把它重命名爲_bootstrap-social.scss