2013-10-08 132 views
0

我仍然是一个大的菜单,所以我希望有人可以帮助!HABTM手册协会

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

回答

1

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

has_and_belongs_to_many :contacts 

,并在您Contact.rb添加

has_and_belongs_to_many :companies 

现在,这种关系建立一个具有两个字段的COMPANY_ID“和 'CONTACT_ID'

新表companies_contacts

在表演动作里面公司负责

@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 
+0

未定义的方法'接触为#<#<类别:0xb44cc9e4>: 0xb0ce404> –

+0

但我想要做的是在公司显示页面有一个联系人的下拉列表中选择? –

+0

编辑答案 <%=的form_for @contact,:URL => contacts_path(:COMPANY_ID => @ company.id)做| F |%> :网址应该是contacts_path而不是为联系人拖放 –