这个头衔实在令人难以置信。
所以我有这样的事情:
class Company < ActiveRecord::Base
has_many :company_partner_associations
has_many :partners, through: :company_partner_associations
end
class CompanyPartnerAssociation
belongs_to :company
belongs_to :partner
end
class Partner
has_many :company_partner_associations
has_many :companies, through: :company_partner_associations
end
在公司表格上,我正在尝试列出所有合作伙伴的列表,并在其旁边添加一个复选框。如果我选中一个,它将创建关联。如果我取消选中它会破坏。
<%= f.fields_for :company_partner_associations, Partner.all do |p| %>
<%= f.check_box :partner_id %>
<% end %>
失败,因为传递的对象是合作伙伴,因此 undefined partner_id on Partner
我敢肯定那里有一个漂亮的解决方案!谢谢!
做这个:
<%= f.collection_check_boxes :partner_ids, Partner.all, :id, :name %>
没有fields_for
。
控制器中必须附带以下参数:
params.require(:company).permit(:company, :params, partner_ids: [])
这应该partner_ids
在您的@company
模型中设置。
使用HABTM
,您可以通过填充“ collection_singular_ids
”方法来声明关联数据;HMT
具有与has_many
关系相关的相同方法:
尽管这将替换当前关联的对象,但它比调用要简单得多f.fields_for
-特别是对于选择伙伴。
--
您也可以使用collection_check_boxes
它用于此目的:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句