如果发生路由错误,如何编写控制器,路由或视图以显示404?
例如,如果用户访问网址
http://0.0.0.0:3000/posts/likes
likes
路径不是路由中的方法。如何将其重定向到404页面?
答案 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::RoutingError
和ActiveRecord::RecordNotFound
会自动提高404作品。