我为控制器添加了资产,并希望根据请求包含它们。
问题是它不包含该资产而不写入.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
其中 admin/popular_schools.js.coffee
<%= controller_specific_js = "#{params[:controller]}.js" %>
上面的行输出: admin/popular_schools.js
并添加它。
网址是:http://localhost:3000/admin/popular_schools
资产.rb:
Rails.application.config.assets.precompile += %w( admin/popular_schools.js.coffee )
生产.rb
config.assets.compile = true
在 “#{params[:controller]}.js”中不指定.js的情况下如何运行它,因为通常它不好。
如果我删除 .js,它不会将其插入资产中,但如果我包含它,它就会开始出现。
另外,如果我使用以下代码:
<%= controller_specific_js = "#{params[:controller]}" %>
<%= javascript_include_tag controller_specific_js if asset_exist?(controller_specific_js) %>
它确实可以在不指定 .js 的情况下工作,但是如果我不想在 assets.rb 文件中包含任何控制器,它们会开始输出异常,该文件不包含在 assets.erb 中,但它确实包含在 assets 文件夹中,出于某些原因我这样做了不想将它们包含在 assets.rb 中
任何解决方法或约定?