在嵌套表单上关注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>
: - (
答案 0 :(得分:0)
.association
仅适用于simple_form
gem
如果没有这个宝石,你必须使用collection_select来实现你想要的东西:
<%= f.collection_select :contact, Contact.all(order: 'contact_name'), :id, :name %>