javascript - Rails 自定义布局 - 生产中的路由错误

标签 javascript css ruby-on-rails ruby-on-rails-4 asset-pipeline

我的网站有一个使用“管理”布局的管理部分。

class Admin::BaseController < ActionController::Base
  layout "admin"

在 layouts/admin.html.slim

 = stylesheet_link_tag "admin", :media => "all"
 = javascript_include_tag "admin"

我收到 admin.js 和 admin.css 的错误

Started GET "/stylesheets/admin.css" for x.x.x.x at 2013-10-25 13:18:16 +0000
F, [2013-10-25T13:18:16.505425 #31550] FATAL -- : 
ActionController::RoutingError (No route matches [GET] "/stylesheets/admin.css"):

这在开发中完美运行,前端 Assets 在生产中正常加载,问题是什么?

最佳答案

原因是您的 rails 服务器(webrick、thin、...)未编译地提供您的 Assets ,它在多个地方(如 app/assetsvendor/ Assets )。在生产中,Rails 假定生产 Web 服务器处理 Assets 服务,这些服务由 public/ 提供。

由于在运行时编译——或者根本不编译它们——会减慢页面服务,它们被编译成引用你的样式的已知 list 文件的名称(即应用程序.{css/js} 默认情况下),您可以通过调用 rake assets:precompile 来完成。

config.assets.precompile += %w( admin.css ) 添加到 config/application.rbconfig/environments/production.rb 以添加您的 admin.css list ,以便 Rails 知道它还必须编译该 list 。然后运行rake assets:precompile(如果你已经把它放到后面,你可能需要添加RAILS_ENV=production)。

关于javascript - Rails 自定义布局 - 生产中的路由错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19591117/

相关文章:

javascript - 混淆 JavaScript 错误 : Cannot read property 'type' of null

javascript - 在其他元素上进行同步动画的滑动切换

html - 为什么在使用 :before height? 时 WebKit 上的对齐标记列表不同

html - 如何设置div中元素的中间垂直对齐?

ruby-on-rails - 安装 heroku toolbelt 后出现 Ruby 错误

javascript - UIWebview 使用 javascript 在移动 safari 中打开 URL

javascript 阻止点击

jquery - 如何在使用 jQuery 滚动时修复 div?

ruby-on-rails - rails 3.1 scss 和 compass 在哪里适合?

ruby-on-rails - Rails:Capybara无法使用Devise夹具数据登录用户