Я намеренно задаю этот вопрос подстрекательским образом, потому что беспокоюсь, что что-то упустил.
Rails Way для обновления модели выглядит следующим образом:
class UsersController < ApplicationController
...
def update
@current_user = load_user
if @current_user.update_attributes params[:user]
redirect_to success_path
else
render :edit
end
end
end
Это все хорошо, за исключением того, что вы попадаете на нечетный URL, когда отправка формы неверна:
Редактирование пользователя
Вы попадаете на путь:
users/:user_id/edit
После отправки изменений, которые не подтверждаются
т.е. вам нужно исправить входные данные в вашей форме и повторно отправить:
users/:user_id
После отправки изменений, которые действительно подтверждают
success_path
Какого черта вы находитесь на другом URL только потому, что в форме есть ошибки?
Проблема ...
Вы делаете то же самое, но теперь у вас другой URL. Это немного странно.
На самом деле, честно говоря, это не так. Вы находитесь в форме, которая не была правильно проверена и поэтому перезагружена. Вы все еще должны быть на /users/:user_id/edit
. Если бы вы сделали проверку JS, вы бы.
Более того, если у вас есть какая-то «выбранная» логика, действующая в вашей навигации, то вы фактически визуально не в том месте, так как правильный элемент навигации больше не подсвечивается - похоже, вы находитесь в профиле пользователя. стр.