18

我们有一个我最近从 Rails 3.0 更新到 Rails 3.2 的 Rails 应用程序。此应用程序为多个客户提供服务。为了为每个客户定制它,我们有目录app/themes。里面有子模块。每个子模块都包含locales/en.ymlviews/layoutsviews/controller_name等内容。我们使用prepend_view_path来添加主题视图,并使用I18n.load_path来添加语言环境。我们正在考虑使用资产管道,这样我们就可以将所有客户端材料组合保留在公共目录之外,并将其包含在每个主题中。

有没有一种方法可以动态地告诉 Rails 加载我想要的主题/主题名称/资产文件夹?我们使用设置逻辑来设置哪个主题处于活动状态。因此,如果我将主题设置为“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 回答