Ruby on rails 为'工作;编辑';,对'失败;新的';。。。未定义的方法`关联';对于#<;ActionView::Helpers::FormBuilder:
按照嵌套表单上的railscast#196。。。我有以下型号: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
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
对象