Предположим, что я создаю новый Foo с использованием формы и стандартного контроллера Rails, который выглядит примерно так:
class FoosController < ApplicationController
...
def index
@foos = Foo.all
end
def new
@foo = Foo.new
end
def create
@foo = Foo.create(params[:foo])
if @foo.save
redirect_to foos_path, :notice => 'Created a foo.'
else
render 'new'
end
end
...
end
Итак, если я использую стандартный restful controller (как указано выше), тогда, когда я создаю Foo, я нахожусь в example.com/foos/new
, и если я отправлю форму, и она будет сохранена правильно, я нахожусь в example.com/foos
, показывая действие индекса. Однако, если форма не заполнена правильно, форма снова отображается и отображаются сообщения об ошибках. Это все простые ванилы.
Однако, если отображаются ошибки, страница формы будет отображаться, но URL будет example.com/foos
, потому что действие CREATE отправляется на этот URL-адрес. Однако можно было бы ожидать индекса Foos # в example.com/foos
, а не в форме, которую они только что отправили, с добавленными сообщениями об ошибках.
Это похоже на стандартное поведение Rails, но для меня это не имеет большого смысла. Очевидно, что я мог бы перенаправить обратно на новый, а не на новый, но проблема с сообщениями об ошибках и т.д. Будет потеряна вместе с частично заполненными Foos в памяти.
Есть ли чистое решение для этой проблемы, способ отправить людей обратно в example.com/foos/new
, когда в новой форме Foo они отправлены ошибки?
Спасибо!