我正在尝试使用Cocoon gem创建嵌套表单。我使用github提供的文档。我设置了这样的模型:
//requst.rb
has_many :filled_cartridges, dependent: :destroy
accepts_nested_attributes_for :filled_cartridges, :reject_if => :all_blank,
allow_destroy: true
//filled_cartridge.rb
belongs_to :request
在我的_form中,我有嵌套形式:
<%= f.fields_for :filled_cartridges do |filled_cartridge| %>
<%= render 'filled_cartridge_fields', f: filled_cartridge %>
<%= link_to_add_association 'add', f, :filled_cartridges %>
<% end %>
我的_filled_cartridge_fields部分:
<fieldset>
<%= f.text_field :cartridge_id %>
<%= f.hidden_field :_destroy %>
<%= link_to_remove_association "remove", f %>
</fieldset>
此外,我还在request_controller内部为 :id 和 :_destroy 定义了强大的参数。
link_to_add_association不起作用,删除工作正常。我不知道为什么会这样。同样,当我单击link_to_add_association默认操作时,即导航到/# 页面。
我认为这个问题与此有关:嵌套属性不起作用,使用新父级创建子项
您需要添加inverse_of
属性才能使其工作
has_many :filled_cartridges, inverse_of: :request, dependent: :destroy