2011-11-23 43 views
0

我是一個新手,軌時遇到一些困難......在單個提交中更新多個記錄? - Rails的3

我有一個表顯示的記錄列表的頁面,並且希望用戶能夠作出修改,提交表單,運行驗證並保存數據。

這是我到目前爲止有:

查看:

- @people.each do |p| 
    %tr 
    %td 
     %input{:type => "hidden", :name => "person_id[]", :value => p.id} 
     %input{:name => "firstname[]", :value => p.firstname} 
    %td 
     %input{:name => "lastname[]", :value => p.lastname} 

實例參數被傳到控制器:

"person_id"=>["12", "13", "14"], 
"firstname"=>["john", "joe", "mary"], 
"lastname"=>["smith", "bloggs", "jane"], 

在這一點上我很害怕,因爲我不再綁定到活動記錄。相反,我覺得自己想編寫一些亂七八糟的代碼來循環訪問person_id數組,以查看發生了什麼變化並寫回任何更改。

這感覺不好,因爲我必須明確地比較每個字段,如果由於驗證錯誤導致某些內容失敗,我應該如何回滾所有更改並向用戶顯示消息?

我希望由於我的軌道無知這整個方法是錯誤的,我錯過了一個把戲。有沒有人有任何建議如何解決這個問題?

+1

看看http://stackoverflow.com/q/5583568/800526的答案 - 更具體地http://railscasts.com/episodes/198-edit-multiple-individual?view=asciicast –

回答

0

我假設你有people modelperson model之間的關聯設置,在您的視圖代碼尋找隱藏person_id領域。
如果您的關聯是正確安裝,使用

accepts_nested_attributes_for

,並按照Rails guides for association basics
在這個時候,我只能幫你這麼多,因爲你的問題沒有提供太多的信息。

+0

謝謝,一直在嘗試這種方法,但根據文檔更新僅適用於1:1關係。 「允許您指定只能更新現有記錄,只有在沒有現有記錄時纔可以創建新記錄,該選項僅適用於一對一關聯,並且在收集關聯時忽略此選項。默認。」 :http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html#method-i-accepts_nested_attributes_for – Chris

相關問題