【问题标题】:Correctly instantiating a nested fields_for without showing older saved objects?正确实例化嵌套的 fields_for 而不显示较旧的保存对象?
【发布时间】:2010-10-26 18:23:39
【问题描述】:

我有一个嵌套表单,它实例化如下:

- 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

我怎样才能让它正确通过(就像在第一个例子中一样)?

【问题讨论】:

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


    【解决方案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 %>
    

    【讨论】:

    • 抱歉,我认为您的答案是正确的,认为理论上是准确的,但实际上,运行此程序时不会生成任何字段。
    • 如果您可以发布对获得准确答案非常有帮助的输出和实际代码(不是伪代码),因为我粘贴的内容在技术上是正确的,但您可能需要根据具体情况进行调整你的设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    相关资源
    最近更新 更多