2012-01-02 7 views
1

rails 3.1にアップグレードしています。 [:テーマ]あなたが知っているようにRails 3.1にアセットパイプラインを使用してさまざまなCSSファイルを動的に組み込む方法

<%= stylesheet_link_tag "themes/#{session[:theme].nil? ? 'base' : 
    session[:theme]}/ui.all" %> 

が、私はセッションのスタイルのベースを変更したい:私の古いapplication.html.erbに、私はこの行を持っています。 This linkのおかげで少し進展しました。私はこれに私のapplication.css.erbを変更:

/* 
* *= require_self 
* */ 
<% 
    require_asset("themes/#{session[:theme].nil? ? 'base' : 
        session[:theme]}/ui.all") 
k%> 
/* rest of file omitted */ 

しかし、それは、この文句:

undefined local variable or method `session' for #<#<Class:0x95152e4>:0x9c6c8bc> 
(in /home/rocky/work/apps/fanfan/app/assets/stylesheets/application.css.erb) 

答えて

2

アプリケーションマニフェストをデプロイ時にコンパイル、またはコンパイルされ、あなたが2を持っているので、資産は、住んで提供している場合はキャッシュされています問題。

最初は、利用可能なセッション値がないことです。もう1つは、これを変更することができても機能しないことです。マニフェストが初めてコンパイルされたときにキャッシュされます。

初期のソリューションに戻って、設定に追加して機能させることができます。

config.assets.precompile += ['themes/theme1_name/ui.all', 'themes/theme2_name/ui.all', etc] 

ここでは、themesがデフォルトのスタイルシートの場所にあると仮定しています。

関連する問題