私は従来のアプリをRails 3.1に変換しています。レガシーアプリはそう比類のないルートに(というおなじみのRailsよりも、「ルーティングエラー」ページ)をカスタムハンドリングを提供するために、最終的なキャッチオールワイルドカードのルートを使用Rails 3.1をオーバーライドする方法 "globing route"エンジンを使用する場合の "Routing Error"?
# myengine/config/routes.rb
Rails.application.routes.draw do
match 'foo/bar/*path' => 'myengine/foobar#index', :format => false
end
:新しいアプリはグロブルートを提供してエンジンを使用しています
# myapp/config/routes.rb
Myapp::application.routes.draw do
# ...
match '*path' => 'failures#index', :format => false
end
何とかこのキャッチオールルートがエンジンのルートを妨害しています。アプリのキャッチオールルートをコメントアウトすると、エンジンのルートが正常に動作します。しかし、私はマッチされることはありませんエンジンのルートでそれを残し、failures#index
へのアプリのキャッチオールルートが代わりに使用されている場合:
Started GET "/foo/bar//projects/x/vol1/prod22/9907042031/9907042031.aff/ImageProperties.xml" for 10.71.1.136 at 2011-08-02 15:46:48 -0700
Processing by FailuresController#index as JS
Parameters: {"path"=>"foo/bar/projects/x/vol1/prod22/9907042031/9907042031.aff/ImageProperties.xml"}
Rendered failures/index.html.erb within layouts/application (0.0ms)
Completed 200 OK in 47ms (Views: 46.9ms)
どのようにしてエンジンのルートを壊すことなく、デフォルトのRails 3.1ルーティングエラーハンドラをオーバーライドするでしょうか?
良い質問です。ところで、Rails 3のキャッチオールルートは、 'match '* path'、:to => 'docs#not_found''のようにフォーマットできます。 – iwasrobbed
これを試しましたか? http://apidock.com/rails/ActiveSupport/Rescuable/ClassMethods/rescue_from – bor1s
この動作はRails 3.xの既知のバグです(Andre Andre Pankratzの2011年3月19日のコメント:https://rails.lighthouseappを参照してください)。 (https://github.com/vidibus/vidibus-routing_error)ここでバグを回避する彼の宝石/ com/projects/8994/tickets/4444-can-no-longer-rescue_from-actioncontrollerroutingerror) – jwfearn