如果没有.js扩展轨道,则无法确定基于控制器的资产是否存在

时间:2017-03-03 08:59:03

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 asset-pipeline rails-assets

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

问题是,如果没有在控制器路径中编写.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

任何变通方法或惯例?

0 个答案:

没有答案