【问题标题】:Rails controller specific assets for selected controllers only仅适用于选定控制器的 Rails 控制器特定资产
【发布时间】:2016-03-14 10:07:26
【问题描述】:

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

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

但是,我不想为管理员控制器创建单独的文件,因为管理员页面不需要新的 css/js。但是,应用程序尝试定位控制器的资产,但由于未找到它返回 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.csshttp://0.0.0.0:3000/account/edit 页面的404

【问题讨论】:

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


    【解决方案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") %>
    

    【讨论】:

    • 您也可以只使用rescue nil 而不是检查资产是否存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 2017-12-31
    • 2012-07-17
    • 2011-04-18
    • 2011-09-28
    • 1970-01-01
    相关资源
    最近更新 更多