2015-06-10 117 views
0

在我的應用程序中,我有各種主題供用戶從特定的網頁中選擇。這些主題僅在顏色和字體類型方面有所不同。所以爲了不重複css聲明,我創建了一個scss文件,其中包含常見的css聲明ztheme.css.scss,其中包含所有主題中的常見CSS樣式。我擁有各種主題scss文件(例如silver.css.scss,melon.css.scss - 如下所示),僅使用爲顏色和字體類型定義的變量值。在所有這些主題scss文件中,您可以在底部看到它將共同的ztheme.css.scss導入爲@import 'ztheme'。因此,當這些主題文件被編譯後,它們將具有適當的顏色和字體類型值的常見CSS樣式。Rails4資產預編譯失敗

silver.css.scss

$nav_bg_color: #F6F6F6; 
$page_font: 'Sintony', sans-serif; 
$page_txt_color: #000033; 
@import 'ztheme'; 

melon.css.scss

$nav_bg_color: #F2F6C6; 
$page_font: 'Arial', verdana; 
$page_txt_color: #628002; 
@import 'ztheme'; 

ztheme.css.scss

body{ 
    padding-bottom: 20px; 
    background: $nav_bg_color; 
    font-family: $page_font; 
    text-rendering: optimizelegibility; 
    color: $page_txt_color; 
} 

問題是,當我在Heroku和資產預編譯揭開序幕部署此代碼,然後將其在ztheme.css.scss失敗,因爲它尋找在其中定義的變量的值。並拋出這個錯誤:

remote:  rake aborted! 
remote:  Sass::SyntaxError: Undefined variable: "$nav_bg_color". 
remote:  /tmp/build_ded002611a0752bd96038a671fd8051c/app/assets/stylesheets/themes/ztheme.css.scss:9 

但是你可以看到,ztheme正在導入在每一個主題文件,所以當ztheme將這些文件導入,這些zthemes的價值應該得到適當的填充,它不應該拋出Undefined variable錯誤。

如何解決這個問題?

我有我的構建資產如下: enter image description here

回答

0

這是很難確定的是從你的代碼是什麼文件什麼樣的代碼,但我認爲你可能已經向後做你@imports。嘗試將所有主題導入到'ztheme.css.scss'中,因爲它們是您定義'$ nav-bg-color'的地方。

這可能不是一個包羅萬象的解決方案,而是從某個地方開始。

我希望這有助於某種方式。

0

經過多次嘗試,終於找到了解決辦法。我不得不爲ztheme.css.scss中的這些變量添加一個default值,該值在主題特定的scss中被覆蓋

$nav_bg_color: #F1C5CE !default; 
$page_font: Arial, Verdana !default; 
$page_txt_color: #459823 !default; 

body{ 
    padding-bottom: 20px; 
    background: $nav_bg_color; 
    font-family: $page_font; 
    text-rendering: optimizelegibility; 
    color: $page_txt_color; 
} 
相關問題