我的网站有一个使用“管理”布局的管理部分。
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/assets
或 vendor/ Assets
)。在生产中,Rails 假定生产 Web 服务器处理 Assets 服务,这些服务由 public/
提供。
由于在运行时编译——或者根本不编译它们——会减慢页面服务,它们被编译成引用你的样式的已知 list 文件的名称(即应用程序.{css/js}
默认情况下),您可以通过调用 rake assets:precompile
来完成。
将 config.assets.precompile += %w( admin.css )
添加到 config/application.rb
或 config/environments/production.rb
以添加您的 admin.css
list ,以便 Rails 知道它还必须编译该 list 。然后运行rake assets:precompile
(如果你已经把它放到后面,你可能需要添加RAILS_ENV=production
)。
关于javascript - Rails 自定义布局 - 生产中的路由错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19591117/