2012-06-28 88 views
0

我想加入兩張表格我有一張桌子'人'和一張桌子'工廠'。加入兩個表格並選擇記錄(表格2)以形成(表格1)並用下拉列表選擇

我的問題是,我該如何添加一個人,而不是選擇(使用下拉列表)該人屬於哪個工廠?

我的人模型:

class Person < ActiveRecord::Base 
    has_many :factories 

    has_attached_file :cv 

    attr_accessible :cv, :email, :function, :mobile, :telephone 
end 

我的工廠模式:

class Factory < ActiveRecord::Base 
    belongs_to :persons 

    attr_accessible :last_name, :email, :telephone, :first_name, :website, :country 
end 

我想這樣做,例如:


|添加人員|

功能:(輸入字段)

電話:(輸入字段)

手機:(輸入字段)

電子郵件:(輸入字段)

廠(下拉) < =這是我希望擁有的實際字段,默認情況下它不放置在人員表中。

CV:(上傳字段)

提交:(提交按鈕)


我希望你明白我想有什麼,我希望有人可以幫助。


**編輯1 我改變了我的計劃。我想在個人表中的一列中選擇一個factory.id。

我在名爲factory.id的Person表中創建了一個列,現在我想將其他表中的數據存儲在該列中。 這可能嗎?**

回答

0

你或許可以這樣做:

控制器:

@people=Person.new 

@factories = Factory.all 

瀏覽:

form_for @people do |a| 
. 
. 
. 
    = a.select :factory, options_for_select(@factories.map{ |f| [f.name, f.id] }) 
+0

謝謝我也會嘗試這個明天:D –

+1

它對你有用嗎? – Gooner

+0

我沒有時間去嘗試,今天我要去嘗試 –

0

你不能選擇在出廠時下拉,因爲人的has_many工廠...... 你可以在另一個方向去做,當你創建一個工廠,你可以選擇它的人與下拉菜單belongs_to。 如果你想這樣做,就像你說的,你可以有多種一個下拉列表中選擇啓用,過程,用手控制,做這樣的事情上:

@person = Person.create(params[:person]) 
params[:factories].each do |f| 
    @person.factories << Factory.find(f) 
end 

在您查看:

select_tag("factories", options_from_collection_for_select(Factory.all, "id", "name"), {:multiple => true}) 
+0

好,我該如何執行這個到我的意見? –

+0

使用select_tag助手,它應該看起來像這樣: select_tag(「factories」,options_from_collection_for_select(Factory.all,「id」,「name」),{:multiple => true}) – iwiznia

+0

好的,謝謝,我會試試看明天,謝謝你的幫助 –