如何使用Nested_form为现有模型创建新记录?

时间:2014-08-04 20:16:41

标签: ruby-on-rails ruby simple-form nested-forms

我的情景:
我有3级层次结构例如:祖父母,父母,孩子。 在初始阶段,我使用nested_form创建了祖父母和父母记录。创建记录后,我想使用nested_form为每个父项创建子记录。
所以我去了父记录并尝试创建儿童记录。但这就是我面临的问题。

  1. 当我使用@parents = Parent.new对象nested_form时,我得到了stack level too deep error
  2. 当我尝试使用@parents = Parent.find(params[:id])对象时,我的子对象正在重写,因为它的更新。
  3. 如何解决这个问题?我想为每个父母创建新的儿童记录,而不会打扰旧的儿童记录(如果有的话)。

    代码:

    我的助手方法代码:

    @parents = Parent.new
      @parents.childrens.build
    

    我对父母的看法,show.html.erb

    <div class="form-inputs well" style="background-color:white; border: solid 1px">
    <%= simple_nested_form_for @parents do |f| %>
     <%= f.simple_fields_for :childrens do |ff| %>
     <div class="well">
      <table>
       <tr>
        <td> <i class="fa fa-check" style="margin-right:10px"></i> </td>
        <td> <%= ff.input :first_name, input_html: { style: "width:140px"} %> </td>
        <td> <%= ff.input :last_name, input_html: { style: "width:140px"}  %></td>
       </tr>
       <tr>
        <td> </td>
        <td> <%= ff.input :email, input_html: { style: "width:140px"} %> </td>
        <td> <%= ff.link_to_remove raw('<i class="fa fa-times-circle" style = "margin:0 0 25px 10px; opacity:0.5" ></i>') %> </td>
       </tr>
      </table>
     </div> 
     <%end%>
     <%= f.link_to_add raw('<i class="fa fa-plus-square"> Add a child</i>'), :childrens, class: "btn btn-info", style: "position:relative; left:230px" %>
     <%= f.submit "Create", class: 'btn btn-success', style: "position:relative; right:80px" %>
    <%end%>
    </div>
    

1 个答案:

答案 0 :(得分:0)

我终于找到了方法,简单。我必须在我的帮助方法中使用下面的代码,但在<% if ff.object.new_record? %>之后添加额外的行条件<%= f.simple_fields_for :childrens do |ff| %>,在视图中稍微扭曲一下,这只会显示没有旧记录的新记录。因此,更新时没有过度写入。

@team = Team.find(params[:id])
@team.team_members.build