HABTM手册协会

时间:2013-10-08 10:02:13

标签: ruby-on-rails ruby-on-rails-3 has-and-belongs-to-many

我仍然是铁杆的大菜鸟,所以我希望有人可以提供帮助!

我有两个模型,公司和联系人,他们之间有HABTM。两者都有适用于CRUD的控制器。例如,我希望能够在公司视图页面上创建一个表单来链接现有联系人(可能是下拉列表)或创建新联系人并将其链接到公司。反之亦然。不确定这是否可行?

1 个答案:

答案 0 :(得分:1)

如果我的问题正确,您希望在公司和联系人之间创建一个has_and_belongs_to_many关系。 所以在你的Company.rb中添加

has_and_belongs_to_many :contacts

并在您的Contact.rb中添加

has_and_belongs_to_many :companies

现在为此关系创建一个新表companies_contacts,其中包含两个字段'company_id'和'contact_id'

在公司控制器里面展示行动

@contact = Contact.new

在公司的展会页面中添加: -

<%= form_for @contact,:url => contacts_path(:company_id=> @company.id) do |f|%>
  <%=f.label :name%>
  <%=f.text_field :name%>
  <%=f.button :submit%>
<%end%>

现在在联系人控制器中,创建操作的行为如下: -

@contact = Contact.find_or_create_by_name(params[:contact][:name])
@contact.companies= Company.where(:id => params[:company_id])
@contact.save