代码之家  ›  专栏  ›  技术社区  ›  Trip

在不显示旧的保存对象的情况下正确实例化的嵌套字段\u?

  •  0
  • Trip  · 技术社区  · 14 年前

    - 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

    如何使其正确通过(如第一个示例所示)?

    1 回复  |  直到 12 年前
        1
  •  1
  •   jenjenut233    14 年前

    试试这个:

    模型

    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 %>