如何从rails 3.1应用程序中的RoutingError
进行救援。如果我错了,可以在应用程序控制器中使用rescue_from RoutingError
,但现在不可能。
答案 0 :(得分:7)
没有好办法处理它,但有一些解决方法。讨论here产生了以下建议:
<强>路线强>
将以下内容添加到路线文件中:
match "*", :to => "home#routing_error"
并处理此操作中的错误:
def routing_error
render text: "Not found, sorry", status: :not_found
end
答案 1 :(得分:7)
我无法复制@ matthew-savage的结果。但是,根据route globbing上的Rails指南和另一个StackOverflow问题上的this question,我解决了这个问题:
的routes.rb
match "*gibberish", :to => "home#routing_error"
注意我是如何在通配符后包含文本的。控制器很好,如上所示:
控制器/ home_controller.rb
....
def routing_error
render text: "Not found, sorry", status: :not_found
end
答案 2 :(得分:0)
好example。
<强> route.rb 强>
Rails 3:
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