我知道如何处理 RecordNotFound 的错误
但是我该如何处理路由错误(没有路由匹配 [GET])?
PS 在本主题中我找不到答案 - Rails - 如何处理不存在的路由(“没有路由匹配 [GET]”)?
我知道如何处理 RecordNotFound 的错误
但是我该如何处理路由错误(没有路由匹配 [GET])?
PS 在本主题中我找不到答案 - Rails - 如何处理不存在的路由(“没有路由匹配 [GET]”)?
处理路由(以及所有其他)的另一种方法是在 ApplicationController 中添加以下内容:
unless Rails.application.config.consider_all_requests_local
rescue_from Exception do |e|
render_500 e
end
rescue_from ActionController::RoutingError, with: :render_404
rescue_from ActionController::UnknownController, with: :render_404
rescue_from ActionController::UnknownAction, with: :render_404
rescue_from ActiveRecord::RecordNotFound, with: :render_404
end
然后确保定义render_500
,render_404
以便他们实际渲染一些东西。在我的应用程序中,我完成了:
def render_404(exception)
@not_found_path = exception.message
respond_to do |format|
format.html { render template: 'errors/error_404', layout: 'layouts/application', status: 404 }
format.all { render nothing: true, status: 404 }
end
end
然后在errors/error_404
. 这样它就可以处理所有路由错误并且仍然使用我的应用程序布局。
您可以使用 @not_found_path 向用户显示错误。
在你的每一条路线之后config/routes.rb
,添加这一行:
match '*url' => 'errors#routing'
然后创建一个名为的控制器ErrorsController
并添加一个routing
操作,您可以在其中params[:url]
了解哪个 URL 导致了 404。
顺便说一句,这是查看您的网站是否有死链接的好方法。
希望能帮助到你 !