用于'编辑',失败为'新'...​​未定义的方法`关联'为#

时间:2014-03-08 11:30:10

标签: 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_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

在我的交易表格中,我有这个

<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_fields只包含:

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

: - (

1 个答案:

答案 0 :(得分:0)

.association仅适用于simple_form gem

如果没有这个宝石,你必须使用collection_select来实现你想要的东西:

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