我在我的rails 4.1 + activeadmin应用程序中使用了cocoon gem(1.2.6)。 link_to_add_association添加了空字段,并在ERB表单中附加了 new 。请参考下面的输入ID
<input id="lease_information_lease_units_attributes_new_lease_units_property_name" type="text" name="lease_information[lease_units_attributes][new_lease_units][property_name]">
当我点击link_to_add_association创建带有id。
的字段时<input id="lease_information_lease_units_attributes_1420800589434_property_name" type="text" name="lease_information[lease_units_attributes][1420800589434][property_name]">
我的lease_informations / _lease_units.html.erb表格:
<%= javascript_include_tag :cocoon %>
<div id='lease_units'>
<%= f.semantic_fields_for :lease_units do |lease_unit| %>
<%= render 'lease_unit_fields', f: lease_unit %>
<% end %>
<div class='links'>
<%= link_to_add_association image_tag("icon-new.png", height: '18', width: '18'), f, :lease_units, title: "Add Unit" %>
</div>
</div>
partial _lease_unit_fields.html.erb:
<div class='nested-fields'>
<table>
<tbody>
<tr >
<td class="col col-unit_type">
<%= f.text_field :unit_type %>
</td>
<td class="col col-unit">
<%= f.text_field :unit %>
</td>
<td class="col col-action">
<%= link_to_remove_association image_tag("icon-remove.png", height: '18', width: '18'), f, title: "Remove Unit" %>
</td>
</tr>
</tbody>
</table>
</div>
我的admin / lease_information.rb
ActiveAdmin.register LeaseInformation do
menu false
controller do
def new
@page_title="Data Entry Form"
@lease_information = LeaseInformation.new
# @lease_information.lease_units.build
end
end
form do |f|
tabs do
tab 'Units' do
table_for resource.lease_units do
column :unit_type
column :unit
end
render "lease_units", f: f # rendering the partial here
end
f.actions do
f.action :submit, label: "Submit"
f.cancel_link(admin_jobs_path)
end
end
end
因此,嵌套字段不会保存在db中。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
我认为将以下代码从lease_informations/_lease_units.html.erb
移至admin/lease_information.rb
文件可以解决您的问题。
<div class='links'>
<%= link_to_add_association image_tag("icon-new.png", height: '18', width: '18'), f, :lease_units, title: "Add Unit" %>
</div>
如果您收到任何错误或需要任何帮助,请退回。
答案 1 :(得分:0)
如果保存不起作用,听起来您在父模型中缺少必需的accepts_nested_attributes_for :lease_units
。
大数而不是新的是正确的行为,每个新的孩子必须是不同的,我们不能将每个新孩子称为新的,所以我们选择一个大的,独特的和未来的数字,因此rails会知道它是一个新的孩子。 / p>