2014-07-10 42 views
-1

我有2個模型,Lanzadera和Addict。如何在創建新實例時傳遞一個ID:

Lanzadera has_many :addicts 
Addict belongs_to :lanzadera 

我有一個Lanzaderas列表,旁邊有一個「註冊」按鈕,它將呈現Addict新表單。

然後用戶將用Addict屬性填寫一個表單,該addict應該列在該特定的lanzadera中。所以,關於在lanzaderas列出吸毒成癮者都是如此。

一切看起來不錯,我可以在日誌中看到lanzadera_id,但是當我說@lanzadera.addicts.count時,它會放入0。這意味着,癮君子正在創建,但沒有被分配到它的lanzadera。

lanzadera_id正被允許在addict_params中的控制器強參數。

我的問題是,在創建新的Addict時,如何在我的表單中傳遞lanzadera_id,以便吸毒者在Lanzadera內獲得列表?

Started POST "/lanzaderas/1/addicts" for 127.0.0.1 at 2014-07-10 19:25:41 +0200 
Processing by AddictsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"mJ7pl2xsjhwhdGM2RZBDA+fmD75tpZcsPIaeSwYaBhE=", "addict"=>{"name"=>"Kike", "email"=>"[email protected]", "city"=>"65", "postal"=>"56478", "street"=>"Aiboa 19, 4", "lanzadera_id"=>""}, "commit"=>"Crear Addict", "lanzadera_id"=>"1"} 
    (0.2ms) BEGIN 
    SQL (0.7ms) INSERT INTO "addicts" ("city", "created_at", "email", "name", "postal", "street", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id" [["city", "65"], ["created_at", Thu, 10 Jul 2014 17:25:41 UTC +00:00], ["email", "[email protected]"], ["name", "Kike"], ["postal", 56478], ["street", "Aiboa 19, 4"], ["updated_at", Thu, 10 Jul 2014 17:25:41 UTC +00:00]] 
+0

您將要查看'fields_for'和'accep_nested_attributes_for'。這些是幫助程序,它將構建一個正確的結構化表單,其中將包含這些信息以及允許在服務器端自動發生的模型方法。 – ABMagil

+0

我看看吧!感謝您回覆@ABMagil – Gibson

回答

0

我的猜測是您在數據庫的Addicts表中缺少。當它開始INSERT INTO行時,它不會將id列爲其中一列。如果你還沒有,請確保'landazera_id'移動到桌子上。 Rails不會自動根據你的has_many,belongs_to關聯(或者至少我從來沒有想過如何使它自動化),所以你必須自己進行遷移。

rails g migration add_landazera_id_to_addicts landazera_id:integer 

檢查文本編輯器中的遷移以確保其正確生成。它應該包括:

def change 
    add_column :addicts, :landazera_id, :integer 
end 
+0

我在我的癮君子表中有t.integer「lanzadera_id」...這就是爲什麼我不明白爲什麼lanzadera_id沒有被插入到癮君子...它應該自動執行還是必須將一個隱藏的輸入或東西,以通過它? @nucleogenesis – Gibson

相關問題