我的Rails 3.2应用程序中有自定义动态错误页面。
为了确保这些错误页面本身不会抛出错误,他们使用简化的应用程序布局,使用简化的布局除去其他内容,动态用户帐户信息(例如标题中的用户头像) application-limited.html.erb
。
# config/application.rb
config.exceptions_app = self.routes
# routes.rb
get '/404', to: 'errors#page_not_found', as: :page_not_found
# errors_controller.rb
class ErrorsController < ApplicationController
def page_not_found
render status: 404, layout: 'application-limited'
end
end
当我通过访问/404
或/500
进行测试时,错误页面会使用有限的布局正确呈现。但是,当我通过访问不存在的页面/foobar
进行测试时,我得到了正确的动态404错误页面,但奇怪的是呈现了正常的应用程序布局,而不是简化的application-limited
布局。
我在这里缺少什么?
更新:
更多实验表明,虽然@BoraMa 建议从ErrorsController
继承ActionController::Base
,但确保在访问/404
时从不使用默认布局,这不会延续到visting /foobarxyz
并呈现自定义404错误页面。
显然有这个原因,但我还没有解决它??