Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 嵌套表单丢失数据_Ruby On Rails 3_Forms_Fields For - Fatal编程技术网

Ruby on rails 3 嵌套表单丢失数据

Ruby on rails 3 嵌套表单丢失数据,ruby-on-rails-3,forms,fields-for,Ruby On Rails 3,Forms,Fields For,不幸的是,在验证用户输入的数据失败后,我的表单丢失了。如何更改此项,以便表单不会丢失数据 查看\u 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

不幸的是,在验证用户输入的数据失败后,我的表单丢失了。如何更改此项,以便表单不会丢失数据

查看\u 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>
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
谢谢你的帮助

使用:

确保在控制器中设置了
@table1
,其中包含从表单提交收到的数据。

使用:


确保在控制器中设置了
@table1
,其中包含从表单提交中接收的数据。

解决方案是将实例变量设置为值,如以下代码所示

<%= f.fields_for :table1 do |ff| %>
  <%= ff.hidden_field :name, :value => @value %>
<% end %>

@价值%>

解决方案是将实例变量设置为值,如以下代码所示

<%= 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 %>

您不必设置值,即使用

更好

<%= f.fields_for :table1, f.object.table1 do |ff| %>
  <% ff.text_field :name %>
<% end %>


您不必设置值,即您是否在UserController#创建操作中使用了
@user=user.new(params[:user])
?请发布您的控制器代码。您是否在UserController#创建操作中使用了
@user=user.new(params[:user])
?请张贴您的控制器代码。