Ruby on rails 4 仅适用于选定控制器的Rails控制器特定资源

Ruby on rails 4 仅适用于选定控制器的Rails控制器特定资源,ruby-on-rails-4,asset-pipeline,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

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

 <%= stylesheet_link_tag 'dashboard', params[:controller], media: 'all' %>
 <%= javascript_include_tag 'dashboard', params[:controller] %>
应该采取什么措施来防止这种情况


此外,有几个控制器显然不需要资产,例如注册控制器,导致404 for
http://0.0.0.0:3000/stylesheets/store/registrations.css
for
http://0.0.0.0:3000/account/edit
page

以下是我在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") %>

您也可以使用
rescue nil
而不是检查资产是否存在。
  <%= 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") %>