1

我有2個模型,響應和條目。Rails has_one/belongs_to沒有保存父母身份證

Response has_one Entry 
Entry belongs_to Response 

(試圖做到這一點對一個響應的放映視圖)

在用於顯示控制器動作,我有:

@response = Response.find(params[:id]) 
@entry = @response.build_entry(:response_id => @response.id) 

也試過只是@response.build_entry

使用simple_form gem和simple_form_for @entry創建條目,但是d oes不保存條目記錄中的父(響應)ID。

我已經做到了這一點的唯一方法是將隱藏字段添加到表單中,我真的不想做......

回答

1

參考this

build

刪除 :response_id => @response.id
@response = Response.find(params[:id]) 
@entry = @response.build_entry 
@response.save 
+0

問題是我不想在表單提交和驗證之前保存記錄... –

+0

是的,這就是爲什麼我應該使用構建,如果任何驗證''response'&'entry'失敗它會不保存其他數據。即,這會確認你沒有'entry'和'entry'沒有'response',反之亦然 – Salil

+0

Ok,但是現在在提交任何內容之前查看響應頁面(即表單)時會顯示驗證錯誤消息,然後提交後,我仍然有同樣的問題... –

0

Salil的代碼是正確的。我認爲你應該修改你的方法並將數據驗證從控制器移動到模型。

+0

我不明白,我的驗證(即存在和唯一性)是在模型:( –

+0

好吧。你說你不想保存記錄之前的表單提交和驗證「模型驗證失敗,數據不會保存,所以爲什麼不嘗試保存,至少? – nourish

+0

我做了,這讓我第三次評論。問題是當我打電話保存,它提交之前顯示驗證消息 –