2012-05-09 7 views
1

私のアプリケーションにはいくつかの会社テーマ固有のスタイルシートがあり、ログインしたユーザーに基づいて特定のスタイルシートがロードされます。これは、「application.html.erb」で、このようなアプリケーションファイルの特定のバージョンをロードすることによって行われます。アセットパイプラインに複数のアプリケーションスタイルシートをロードする

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

THSは、局所的に正常に動作しますが、生産上の(「すくい資産:プリコンパイル」の後)、それは元の '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マニフェストファイルを配列に配置するだけです。

rails newを実行したRailsのバージョンに応じて、この設定項目は既にあなたのproduction.rbに存在する可能性があります。

+0

ありがとうございました。これについては考えていませんでした。 – John

+0

config.assets.precompileにファイル名を追加すると、.scss拡張子は無視できます。したがって、ファイル名がsearch.css.scssの場合は、上記のように 'search.css'を追加してください。 – Eskim0