18

最近Rails3.0からRails3.2に更新したRailsアプリがあります。このアプリは複数のクライアントにサービスを提供します。クライアントごとにカスタマイズするために、ディレクトリがありapp/themesます。サブモジュールがあります。各サブモジュールには、、、などが含まれていますlocales/en.ymlviews/layoutsviews/controller_name使用しprepend_view_pathてテーマビューを追加し、を使用I18n.load_pathしてロケールを追加します。アセットパイプラインの使用を検討しているので、クライアントマテリアルのすべての組み合わせをパブリックディレクトリから除外し、各テーマに含めることができます。

レールに動的に指示して、必要なテーマ/テーマ名/アセットフォルダーをロードする方法はありますか?設定ロジックを使用して、アクティブなテーマを設定します。したがって、テーマを「google」に設定している場合ApplicationControllerは、パスからファイルをロードします。

app/themes/google/locales/*.yml
app/themes/google/views

私ができるようにしたいのは、マニフェストファイルを持っていることです。

app/themes/google/assets/stylesheets/application.css

app/views/layoutsファイルの場合と同じように、レイアウトに簡単にアクセスできます。

= stylesheet_link_tag "application"

これを行う方法はありますか?または、アセットを実際のアセットディレクトリに手動で移動する必要がありますか?

4

1 に答える 1

16

application.rbでそれを行うことができました:

require "#{Rails.root}/app/models/settings.rb"
config.assets.paths << "#{Rails.root}/app/themes/#{Settings.theme}/assets/stylesheets"
config.assets.paths << "#{Rails.root}/app/themes/#{Settings.theme}/assets/images"
config.assets.paths << "#{Rails.root}/app/themes/#{Settings.theme}/assets/javascripts"
于 2013-02-06T20:54:28.400 に答える