Оставьте поля формы заполненными после ошибки (RoR) - PullRequest
27 голосов
/ 27 мая 2010

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

Ответы [ 2 ]

17 голосов
/ 27 мая 2010

Ваше мнение (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
1 голос
/ 05 сентября 2013

Поскольку в моем случае форма была в виде другого контроллера , я использовал 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 ... %>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...