2013-10-08 182 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而不是爲聯繫人拖放 –