Ruby on rails 为'工作;编辑';,对'失败;新的';。。。未定义的方法`关联';对于#<;ActionView::Helpers::FormBuilder:

Ruby on rails 为'工作;编辑';,对'失败;新的';。。。未定义的方法`关联';对于#<;ActionView::Helpers::FormBuilder:,ruby-on-rails,forms,activerecord,Ruby On Rails,Forms,Activerecord,按照嵌套表单上的railscast#196。。。我有以下型号: class DealContact < ActiveRecord::Base belongs_to :deal belongs_to :contact class Contact < ActiveRecord::Base has_many :deal_contacts has_many :deals, through: :deal_contacts accepts_nested_attributes

按照嵌套表单上的railscast#196。。。我有以下型号:

class DealContact < ActiveRecord::Base
  belongs_to :deal
  belongs_to :contact

class Contact < ActiveRecord::Base
  has_many :deal_contacts
  has_many :deals, through: :deal_contacts
  accepts_nested_attributes_for :deal_contacts, :allow_destroy => true

class Deal < ActiveRecord::Base
  has_many :deal_contacts
  has_many :contacts, through: :deal_contacts
  accepts_nested_attributes_for :deal_contacts, :allow_destroy => true
class DealContacttrue
类处理true
在我的交易表中,我有这个

<div class="row">
    <div class="span12"><h4>Contacts Associated with this Deal</h4></div>
    <%= f.fields_for :deal_contacts do |builder| %>
        <%= render 'deal_contact_fields', f: builder %>
    <% end %>
    <div class="span1"><%= link_to_add_contact "Add", f, :deal_contacts %></div>
    </div>
</div>

与此交易相关的联系人
而deal_contact_字段仅包含:

<fieldset>
    <div class="span4">
        <%= f.association :contact, collection: Contact.all(order: 'contact_name'), label_method: :full_desc %>
    </div>
    <div class="span6">
        <%= f.label :details, "Details " %>
        <%= f.text_field :details %>
    </div>
    <div class="span1" style="margin-top: 30px">
        <%= f.hidden_field :_destroy %>
        <%= link_to "remove", '#', class: "remove_fields" %>
    </div>
</fieldset>

这一切对于编辑现有交易都非常有效,但是当我创建一个新交易时,会出现以下错误:

undefined method `association' for #<ActionView::Helpers::FormBuilder:0x007fe6fba55840>
未定义的方法“关联”#

:-(

.association
仅在中提供

如果没有宝石,你必须使用它来实现你想要的:

<%= f.collection_select :contact, Contact.all(order: 'contact_name'), :id, :name %>


Hi Rich,感谢您的回复。安装了Simple form,在我编辑现有交易时工作正常,可以将联系人添加到我的心意内容中。但是,我将尝试切换到收藏。抱歉,没有意识到您安装了
Simple\u form
,可能是您传递了
builder
对象(而不是
f
)是导致问题的原因吗?您当前正在将
f:builder
传递给您的分部。这是
builder的
f.fields\u,而不是整个表单生成器对象。可能
f.association
将用于父
f
对象,而不是
builder
对象