仅为选定控制器启用控制器特定资产

时间:2016-03-14 10:07:27

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

我想仅为某些控制器使用控制器特定资产,但并非所有控制器都使用。因此,我没有添加我不需要单独文件的资产。但这会导致404这些资源,因为它们不存在,例如我的app/views/layouts/dashboard.html.erb文件包含以下代码片段,用于生成控制器特定的js / css:

 <%= stylesheet_link_tag 'dashboard', params[:controller], media: 'all' %>
 <%= javascript_include_tag 'dashboard', params[:controller] %>

但是,我不想为Admin控制器创建单独的文件,因为管理员页面不需要新的css / js。但是,app试图找到控制器的资产,因为没有找到它返回404,如下所示:

GET http://dashboard.localhost.com:3000/stylesheets/dashboard/admins.css 404 (Not Found)
GET http://dashboard.localhost.com:3000/javascripts/dashboard/admins.js 404 (Not Found)

应该采取什么措施来阻止这种情况?

此外,有一些控制器显然不需要资产,例如,注册控制器,http://0.0.0.0:3000/stylesheets/store/registrations.css页面的http://0.0.0.0:3000/account/edit为404

1 个答案:

答案 0 :(得分:1)

以下是我在application.html.erb中解决此问题的方法:

  <%= stylesheet_link_tag 'dashboard' %>
  <%= stylesheet_link_tag params[:controller] if InmonarchWebsite::Application.assets.find_asset("#{params[:controller]}.css") %>
  <%= javascript_include_tag 'dashboard' %>
  <%= javascript_include_tag params[:controller] if InmonarchWebsite::Application.assets.find_asset("#{params[:controller]}.js") %>