如何在Ruby on Rails中处理404错误?

时间:2012-10-01 06:18:07

标签: ruby-on-rails

如果发生路由错误,如何编写控制器,路由或视图以显示404?

例如,如果用户访问网址

http://0.0.0.0:3000/posts/likes

likes路径不是路由中的方法。如何将其重定向到404页面?

3 个答案:

答案 0 :(得分:3)

快速的Google搜索提供的资源很少。我建议跟随两个。

虽然我没有亲自使用这些,但我认为宝石可以帮助你。 是的,第二个链接来自现实生活场景。

答案 1 :(得分:2)

1.在 application_controller.rb

# ..
rescue_from ActiveRecord::RecordNotFound, :with => :record_not_found

private
def record_not_found(e)
  render ‘errors/not_found’, :status => 404
end

2.创建错误文件夹和名为 not_found.html.erb

的文件

3.将源添加到 application_controller.rb

def record_not_found(e)
  render ‘errors/not_found’, :status => 404, :layout => ‘error’
end

答案 2 :(得分:2)

Rails允许您定义自己的“例外应用程序”来处理错误。这是处理错误的一种方法。在application.rb

config.exceptions_app = self.routes

然后在你的路线中:

match '/404', to: 'errors#not_found'
match '/500', to: 'errors#error'

然后,您只需要一个ErrorsController,其中包含您要处理的不同错误的方法,以及每个错误的模板文件,如果您想使用它,还需要一个errors.html.erb布局文件。

ActionController::RoutingErrorActiveRecord::RecordNotFound会自动提高404作品。