cocoon link_to_add_association添加空关联字段rails 4 erb

时间:2015-01-09 10:58:33

标签: activeadmin ruby-on-rails-4.1 cocoon-gem

我在我的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中。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 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>