У меня есть маршрут, я выдаю DELETE
on:
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
, что приводит к 404 (поскольку DELETE
не поддерживается этим ресурсом - в любом случае это неправильно).
Если я просто делаю "GET" на перенаправленном URL-адресе, он отлично работает.
Что мне не хватает в перенаправлении Rails после удаления? Спасибо.