我的情景:
我有3级层次结构例如:祖父母,父母,孩子。
在初始阶段,我使用nested_form
创建了祖父母和父母记录。创建记录后,我想使用nested_form
为每个父项创建子记录。
所以我去了父记录并尝试创建儿童记录。但这就是我面临的问题。
@parents = Parent.new
对象nested_form
时,我得到了stack level too deep error
。 @parents = Parent.find(params[:id])
对象时,我的子对象正在重写,因为它的更新。 如何解决这个问题?我想为每个父母创建新的儿童记录,而不会打扰旧的儿童记录(如果有的话)。
代码:
我的助手方法代码:
@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>
答案 0 :(得分:0)
我终于找到了方法,简单。我必须在我的帮助方法中使用下面的代码,但在<% if ff.object.new_record? %>
之后添加额外的行条件<%= f.simple_fields_for :childrens do |ff| %>
,在视图中稍微扭曲一下,这只会显示没有旧记录的新记录。因此,更新时没有过度写入。
@team = Team.find(params[:id])
@team.team_members.build