我为控制器添加了资产,并希望根据请求包含它们。
问题是,如果没有在控制器路径中编写.js
,则不包含该资产
布局页面上的代码为:
<%= controller_specific_js = "#{params[:controller]}.js" %>
<%= javascript_include_tag controller_specific_js if asset_exist?
(controller_specific_js) %>
帮助方法:
def asset_exist?(path)
if Rails.configuration.assets.compile
Rails.application.precompiled_assets.include? path
else
Rails.application.assets_manifest.assets[path].present?
end
end
资产位于admin/popular_schools
<{1}}
admin/popular_schools.js.coffee
以上行输出:<%= controller_specific_js = "#{params[:controller]}.js" %>
并添加。
网址为:admin/popular_schools.js
assets.rb:
http://localhost:3000/admin/popular_schools
production.rb
Rails.application.config.assets.precompile += %w( admin/popular_schools.js.coffee )
如果没有在“#{params [:controller]}中指定 .js ,我可以如何运行它?js”,因为它不太好。
如果删除.js,则不会将其插入资源中,但如果我将其包含在内,则会开始显示。
如果我使用下面的代码:
config.assets.compile = true
它确实可以在不指定.js的情况下工作但是如果我不想在assets.rb文件中包含任何控制器,它们会开始输出异常,该文件不包含在assets.erb中,但它包含在assets文件夹中,对于某些文件原因我不想将它们包含在assets.rb
中任何变通方法或惯例?