如何重定向到Rails中的404?

我想在Rails中“伪造”404页面。在PHP中,我只发送一个带有错误代码的标题,如下所示:

标题(“未找到HTTP/1.0 404”);

Rails是如何做到这一点的

不要自己渲染404,没有理由渲染;Rails已经内置了这个功能。如果要显示404页面,请在ApplicationController中创建render_404方法(或not_found,如我所说):

未找到def
raise ActionController::RoutingError.new(’未找到’)
终止

Rails还以相同的方式处理AbstractController::ActionNotFoundActiveRecord::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的更多信息

发表评论