资产
hero_banner.jpg
未声明在生产中进行预编译。
在 app/assets/config/manifest.js
中声明指向您的资产的链接。
//= link hero_banner.jpg
Rails.application.config.assets.paths << MyEngine::Engine.root.join('app', 'apps', 'themes', 'default_theme','assets','stylesheets')
Rails.application.config.assets.paths << MyEngine::Engine.root.join('app', 'apps', 'themes', 'default_theme','assets', 'images')
我已在配置中的 asset.rb 文件中添加了这一行,以便预编译常规资源之外的一些其他资源。 我必须在清单文件中再次添加这些行才能查看视图上的任何更改。
//= link default_theme.css
//= link new_theme.css
//= link hero_banner.jpg
css 文件位于 stylesheets 文件夹中,类似的,hero_banner 位于预编译资源的 images 文件夹中。我应该如何一次性编译所有文件,而不是像这样编写每个文件?
您可以使用引擎的清单文件:
// my_engine/app/assets/config/my_engine_manifest.js
//= link_directory ../../apps/themes/default_theme/assets/stylesheets
//= link_tree ../../apps/themes/default_theme/assets/images
然后添加一个初始化程序来预编译此清单:
# my_engine/lib/my_engine/engine.rb
initializer "my_engine.themes" do |app|
app.config.assets.precompile << "my_engine_manifest.js"
end