如何在Rails 3.1应用程序中从RoutingError
中解救出来。如果我没记错的话,以前可以在应用程序控制器中使用rescue_from RoutingError
,但现在不行了。
如何在Rails 3.1应用程序中从RoutingError
中解救出来。如果我没记错的话,以前可以在应用程序控制器中使用rescue_from RoutingError
,但现在不行了。
没有一种很好的方式来处理它,但有一些变通方法。在这里讨论中提出了以下建议:
路由
在您的路由文件中添加以下内容:
match "*", :to => "home#routing_error"
并在此操作中处理错误:
def routing_error
render text: "Not found, sorry", status: :not_found
end
好的 样例。
route.rb
Rails 3:
match '*unmatched_route', :to => 'application#raise_not_found!'
Rails 4:
get '*unmatched_route' => 'application#raise_not_found!'
match '*unmatched_route', :to => 'application#raise_not_found!'
Rails 4:get '*unmatched_route' => 'application#raise_not_found!'
application_controller.rb
def raise_not_found!
raise ActionController::RoutingError.new("No route matches #{params[:unmatched_route]}")
end
render text: "Not found, sorry", status: :not_found, content_type: Mime::HTML
,以正确处理像/icon.png
这样的响应。 - kizzx2