私が発行しているルートがありますDELETE
:
user_authorization_path(@user, authorization)
コントローラーに問題なくヒットし、コントローラーはリソースを削除してから、リダイレクトを発行します。
redirect_to edit_user_path(params[:user_id])
この結果、リダイレクト時にルーティング エラーが発生します。
ActionController::RoutingError (No route matches [DELETE] "/users/1/edit")
ログを見ると、レールがリダイレクトまで正しいことを行っていることがわかります。リダイレクトは、次のDELETE
代わりに別のものを発行しようとしていGET
ます。
Started DELETE "/users/1/authorizations/12"...
...
Redirected to http://localhost:3000/users/1/edit
Completed 302 Found in 8ms (ActiveRecord: 0.2ms)
Started DELETE "/users/1/edit"...
ActionController::RoutingError (No route matches [DELETE] "/users/1/edit")
Chrome デバッガーに最初のリクエストが表示されます。
Request URL:http://localhost:3000/users/1/authorizations/12
Request Method:DELETE
Status Code:302 Found
そして、リダイレクトの次のとおりです。
Request URL:http://localhost:3000/users/1/edit
Request Method:GET
Status Code:404 Not Found
したがって、これはブラウザがリダイレクトを正しくたどっているように見えますが、レールはGET
リダイレクト呼び出しを無視し、代わりにDELETE
which を使用して 404 を返します (DELETE
そのリソースではサポートされていないため、とにかく間違っています)。
リダイレクトされた URL で単純に「GET」を実行すると、正常に動作します。
削除後のRailsのリダイレクトについて何が欠けていますか? ありがとう。