【问题标题】:Nested forms in Rails 4 using Cocoon gem使用 Cocoon gem 在 Rails 4 中嵌套表单
【发布时间】:2015-04-17 08:54:30
【问题描述】:

我正在尝试使用 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 时,默认操作已完成,即导航到 /# 页面。

【问题讨论】:

  • 当你点击添加按钮时,部分渲染了吗?问题是您可以将新项目保留在 db 上,对吗?
  • @Leantraxx no partial 不渲染

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


【解决方案1】:

我认为这个问题与此有关: Nested attributes not working creating children with new parent

您需要添加inverse_of 属性才能使其工作

has_many :filled_cartridges, inverse_of: :request, dependent: :destroy

【讨论】:

    猜你喜欢
    • 2016-04-04
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多