Не могли бы вы сделать это вместо рендеринга нового действия?
flash[:thing] = params[:thing]
redirect_to new_thing_path
Тогда в новом
@thing = Thing.new(flash[:thing] || params[:thing])
Это, честно говоря, мне кажется более приятным, потому что в противном случае, если в вашем контроллере есть любая логика, необходимая для рендеринга новых / редактируемых действий, вы должны повторить эту логику (или создать некоторый before_filter или что-то еще) в обновлении / создании. Я понимаю, что это включает еще один запрос, но помимо этого он кажется простым и безопасным для кода (кроме того факта, что вы нарушаете соглашения по рельсам) и дает пользователю действительный URL-адрес, который всегда одинаков для просмотра / выполнения одного и того же вещь.
Если они обновятся, они потеряют свои значения, но это верно для любой формы перед отправкой. И это, кажется, имеет больше смысла для меня, чем обновление, что приводит к повторному предупреждению, что довольно странно. Как пользователь должен очистить форму, например?
Этот рельсизм всегда преследовал меня. Есть ли серьезные проблемы с этим, которые я не рассматриваю? Все ли другие платформы приложений делают то же самое?