正确地实例化嵌套的fields_for而不显示较旧的已保存对象?

时间:2010-10-26 18:23:40

标签: ruby-on-rails forms nested nested-forms

我有一个嵌套的表单,实例化为:

- 2.times { @organization.referrals.build }
- form_for @organization do |f|
  = f.error_messages
  - f.fields_for :referrals do |f|

除此之外,嵌套表单应该始终是新的且唯一的。此表单也显示以前创建的对象。

所以我试着这么写..

- 2.times { @organization.referrals.build }
- form_for @organization do |f|
  = f.error_messages
  - f.fields_for @organization.referrals.select{|r| r.new_record? } do |f|

但是现在我没有看到2个空白表单,我无法保存我的对象,因为它试图通过Organization.referral(这不是方法)而不是Organization.referrals

问题1

如何创建2个空白表单?

问题2

如何正确传递(如第一个示例中所示)?

1 个答案:

答案 0 :(得分:1)

试试这个:

模型

class Organization < ActiveRecord::Base
  has_many :referrals
  accepts_nested_attributes_for :referrals
end

视图

<%= form_for @organization do |f| %>
  <% 2.times do |i| %>
    <%= f.fields_for :referrals, @organization.referrals.build, :index => i do |rf| %>
       <%= rf.text_field :some_referral_attribute %>
    <% end %>
  <% end %>
<% end %>