После проверки я получил сообщение об ошибке, и я вернулся к :action => :new
.
Некоторое поле в форме уже заполнено, поэтому я хочу, чтобы они заполнялись даже после сообщения об ошибке.
Как это можно сделать?
Сохранять поля формы после ошибки (RoR)
Ответ 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 ... %>
Надеюсь, что это поможет некоторым из вас; -).