我的网站的管理部分使用“管理员”布局。
class Admin::BaseController < ActionController::Base
layout "admin"
布局/ 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"):
这在开发中非常有效,并且前端资产在生产中正常加载,问题是什么?
答案 0 :(得分:2)
原因是你的rails服务器(webrick,thin,...)为你的资产提供了未编译的资源,它在几个地方(例如app/assets
或vendor/assets
)查找它。在生产中,rails假定生产Web服务器处理资产服务,这些服务由public/
提供。
由于在运行时编译 - 或者根本没有编译它们 - 减慢了页面服务的速度,它们被编译成引用你的样式的已知清单文件的名称(即{{1}默认情况下),您可以通过调用application.{css/js}
来完成。
将rake assets:precompile
添加到config.assets.precompile += %w( admin.css )
或config/application.rb
以添加您的config/environments/production.rb
清单,以便rails知道它还必须编译该清单。然后运行admin.css
(如果你把它放到后面,你可能需要添加rake assets:precompile
)。