我想在Rails中“伪造”404页面。在PHP中,我只发送一个带有错误代码的标题,如下所示:
标题(“未找到HTTP/1.0 404”);
Rails是如何做到这一点的
不要自己渲染404,没有理由渲染;Rails已经内置了这个功能。如果要显示404页面,请在ApplicationController中创建render_404方法(或not_found,如我所说):
未找到def
raise ActionController::RoutingError.new(’未找到’)
终止
Rails还以相同的方式处理AbstractController::ActionNotFound和ActiveRecord::RecordNotFound
这有两件事做得更好:
1) 它使用Rails内置的处理程序中的rescue_来呈现404页面,并且
2) 它会中断代码的执行,让您可以做一些很好的事情,例如:
user=user。通过电子邮件(params[:email])查找或未找到
user.do_做点什么!
不用写难看的条件语句
作为奖励,它在测试中也非常容易处理。例如,在rspec集成测试中:
#RSpec 1
兰姆达{
访问“/something/you/want/to/404”
}.应引发_错误(ActionController::RoutingError)
#RSpec 2+
期待{
获取“/something/you/want/to/404”
}.引发_错误(ActionController::RoutingError)
和小型测试:
断言(ActionController::RoutingError)执行
获取“/something/you/want/to/404”
终止
或者参考控制器操作中未找到Rails render 404的更多信息