我最近有一个rails应用程序,我最近从Rails 3.0更新到Rails 3.2.这个应用程序为多个客户端服务.要为每个客户端定制,我们有目录应用程序/主题.有子模块.每个子模块都包含如locales / en.yml,views / layouts,views / 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"
有办法我可以做到吗?或者我们需要手动将资产移动到实际的资产目录中?
解决方法
能够在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"