Вложенная форма теряет данные
К сожалению, теряет мою форму после неудачной проверки данных, которые набрал пользователь. Как я могу изменить это, чтобы форма не теряла данные?
Посмотреть _form.html.erb:
<%= form_for(@user, :html => {:name => "newUser""}) do |f| %>
<div class="field_left">
<%= f.label :last_name, "Last name<span>*</span>".html_safe %><br />
<%= f.text_field :last_name %>
</div>
<% end %>
<div class="field">
<%= f.fields_for :table1 do |ff| %>
<%= ff.text_field :name %>
<% end %>
</div>
Контроллер users_controller:
def new
@user = User.new
1.times {@user.table1.build}
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @user }
end
end
def create
@user = User.new(params[:user])
@table1= params[:user][:table1][:name]
respond_to do |format|
if @user.save
format.html { redirect_to(@user, :notice => 'User was successfully created.') }
format.xml { render :xml => @user, :status => :created, :location => @user }
else
format.html { render :action => "new" }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
Спасибо за вашу помощь!
3 ответа
Решение
Решение состоит в том, чтобы установить переменную экземпляра в качестве значения, как показано в следующем коде.
<%= f.fields_for :table1 do |ff| %>
<%= ff.hidden_field :name, :value => @value %>
<% end %>
Лучше использовать
<%= f.fields_for :table1, f.object.table1 do |ff| %>
<% ff.text_field :name %>
<% end %>
Вам не нужно устанавливать значения, т.е. <% ff.text_field :name, value: 'something' %>
,
Использование: <%= f.fields_for @table1 do |ff| %>
Удостоверься что @table1
устанавливается в контроллере с данными, полученными при отправке формы.