7

RoutingErrorRails3.1アプリケーションから救出する方法。私が間違っていなければrescue_from RoutingError、アプリケーションコントローラで使用することは可能でしたが、現在は不可能です。

4

3 に答える 3

7

それを処理するための優れた方法はありませんが、いくつかの回避策があります。ここでの議論は、次の提案をもたらします。

ルート

ルートファイルに以下を追加します。

match "*", :to => "home#routing_error"

このアクションでエラーを処理します。

def routing_error
  render text: "Not found, sorry", status: :not_found
end
于 2012-03-15T15:21:51.480 に答える
7

@matthew-savageの結果を再現できませんでした。ただし、ルートグロブに関するRailsガイドと別のStackOverflow質問に関するこの質問に従って、私はこの問題を次のように解決しました。

ルート.rb

match "*gibberish", :to => "home#routing_error"

ワイルドカードの後に​​テキストを含めたことに注意してください。上記のように、コントローラーは正常です。

controller / home_controller.rb

....
def routing_error
    render text: "Not found, sorry", status: :not_found
end
于 2013-04-29T23:41:05.683 に答える
0

良い

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
于 2016-04-15T15:47:39.687 に答える