При отправке формы с ошибками форма + ошибки отображаются по другому URL-адресу, чем исходная форма. - PullRequest
0 голосов
/ 30 августа 2009

Я работаю над относительно простым веб-сайтом (в настоящее время) с одним ресурсом. У меня есть форма на GET /maps/new, которая отправляет данные для новой карты на POST /maps, которая после завершения перенаправляет на GET /maps/:id. Проблема здесь в том, что если проверка не удалась, она отображает форму новой карты, поэтому URL-адрес по-прежнему /maps. Но перенаправление на /maps/new теряет ошибки валидации (и данные карты, которые они ранее вводили).

Это мой первый настоящий веб-сайт на Rails, так что я уверен, что это, наверное, что-то простое, что мне не хватает. Вот мои действия new и create, которые практически не изменились по сравнению с созданными лесами:

def new
  @map = Map.new

  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @map }
  end
end

def create
  @map = Map.new(params[:map])

  respond_to do |format|
    if @map.save
      flash[:notice] = 'Map was successfully created.'
      format.html { redirect_to(@map) }
      format.xml  { render :xml => @map, :status => :created, :location => @map }
    else
      format.html { render :action => 'new' }
      format.xml  { render :xml => @map.errors, :status => :unprocessable_entity }
    end
  end
end

Как я могу заставить URL-адрес оставаться на /maps/new для формы, а также поддерживать данные промежуточной формы и ошибки?

1 Ответ

0 голосов
/ 30 августа 2009

Это у вас работает?

def new
  @map = flash[:map] || Map.new

...

 else
   flash[:map] = @map
   format.html { redirect_to new_map_url }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...