3

Rails 3.0 に基づくアプリがありました。これは予測アプリであり、異なるルールで同じセレクターを使用するため、異なるスプレッドで異なる CSS ルール セットが必要です。

以前はRails 3.0でいい解決策がありました。

  1. データベースのスプレッドに、CSS ファイルの名前 (拡張子なし) の列がありました。

  2. このデータを次のようにピックアップしました。

    @spread = Spread.find_by_id(params[:spread_id])
    @css_to_use = @spread.css_to_use
    
  3. application.html.erb に条件行を追加します。

    <%= stylesheet_link_tag @css_to_use unless @css_to_use.blank? %>
    

これは今までうまくいきました。私はこのアプリを Rails 3.2 用に開発していますが、アセット パイプラインのおかげで、この魔法はなくなりました。

私はこれを見つけました: Using Rails 3.1 assets pipeline to conditionally use certain css , しかし、これは少し遅いソリューションです (そして今まさに私が欲しいものです)。

この問題の回避策はありますか? 指定されたファイルをロードするだけでなく、依存関係を持つソリューションを知っていますか?

4

1 に答える 1

3

私は同様の要件を持つプロジェクトを持っており、リンクされた回答に示されている手法を使用しています。

# app/views/layouts/application.html.haml
= stylesheet_link_tag "application", "labels/#{Whitelabel[:label_id]}"

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

これには、application.rbに含まれていない追加のスタイルシートが含まれます

完全なソースをご覧ください:https ://github.com/phoet/on_ruby/

于 2012-07-30T16:30:30.857 に答える