0

我为控制器添加了资产,并希望根据请求包含它们。

问题是它不包含该资产而不写入.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 中

任何解决方法或约定?

4

0 回答 0