Подтвердить что ты не робот

Сохранять поля формы после ошибки (RoR)

После проверки я получил сообщение об ошибке, и я вернулся к :action => :new. Некоторое поле в форме уже заполнено, поэтому я хочу, чтобы они заполнялись даже после сообщения об ошибке. Как это можно сделать?

4b9b3361

Ответ 1

Ваш вид (new.html.erb) выглядит следующим образом

<%= error_message_for :user %>
<% form_for :user, :action=>"create" do|f|%>

<%= f.text_field :login %>

<% end %>

Код контроллера (метод создания)

def create
  @user=User.new(params[:user])
  if @user.save
     redirect_to :action=>'index'
  else
     render :action=>'new'  #you should render to fill fields after error message
  end
end

Ответ 2

Так как в моем случае форма была в виду другого контроллера, я использовал flash для хранения моих данных, а затем проверить, имеются ли данные во флэш-памяти. Если да, возьмите это значение по умолчанию для своих полей ввода, если не просто покажите то, что вы хотите показать.

Итак, фрагменты из моего кода

flash[:date] = start_date

# in the view where to form resides
start_day = flash[:date].nil? nil : flash[:date].day
# ...
<%= select day start_day ... %>

Надеюсь, что это поможет некоторым из вас; -).