2012-05-09 27 views
1

我的應用程序中有幾個公司主題特定的樣式表,並且基於登錄用戶加載了特定的樣式表。在資產管道中加載多個應用程序樣式表

<% if current_user %> 
    <% stylesheet_link_tag "application_" + current_user.company.code.downcase %> 
<% else %> 
    <%= stylesheet_link_tag "application" %> 
<% end %> 

THS正常工作在本地,但在生產:這是由「application.html.erb」加載應用程序文件的特定版本是這樣做(後「耙資產:預編譯」),它不起作用,因爲它似乎只有原始的'application.css.scss'被編譯,而不是像例如其他的'application_sal.css.scss'。我在這裏做錯了什麼?

這是要走的路嗎?當用戶在特定的應用程序文件中記錄加載,其中包含了公司的具體樣式:

@import "_variables.css.scss"; 
@import "_mixins.css.scss"; 
@import "_reset.css.scss"; 
@import "_layout.css.scss"; 
@import "_skeleton.css.scss"; 

@import "_theme_sal.css.scss"; 

@import "_form.css.scss"; 
@import "base.css.scss"; 
@import "print.css.scss"; 
@import "_modules.css.scss"; 

當用戶沒有登錄,默認的應用程序文件被加載:

@import "_variables.css.scss"; 
@import "_mixins.css.scss"; 
@import "_reset.css.scss"; 
@import "_layout.css.scss"; 
@import "_skeleton.css.scss"; 
@import "_form.css.scss"; 
@import "base.css.scss"; 
@import "print.css.scss"; 
@import "_modules.css.scss"; 

是有更好的方法來做到這一點?謝謝!

回答

2

嘗試更新environments/production.rb中的預編譯配置項。雖然application.css是自動預編譯的,但其他人不會沒有此配置項目。

# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) 
config.assets.precompile += %w(search.css) 

只需將每個公司特定的css清單文件放在數組中。

此配置項可能已經在您的production.rb註釋掉,具體取決於您在哪個版本的Rails下運行rails new

+0

謝謝,沒想到這個! – John

+0

要清楚,當您在config.assets.precompile中添加文件名時,可以忽略.scss擴展名。所以如果你的文件名是search.css.scss,只需像上面那樣添加'search.css'即可。 – Eskim0

相關問題