在单个提交中更新多个记录? - Rails 3

时间:2011-11-23 10:16:32

标签: ruby-on-rails ruby-on-rails-3 activerecord orm

我是铁杆的新手,我遇到了一些困难......

我有一个页面显示表格中的记录列表,并希望用户能够进行更改,提交表单,运行验证并保留数据。

这是我到目前为止所做的:

查看:

- @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 个答案:

答案 0 :(得分:0)

我认为您在people modelperson model之间设置了关联,方法是查看视图代码中隐藏的person_id字段。
如果您的关联设置正确,请使用

  

<强> accepts_nested_attributes_for

并按照Rails guides for association basics 在这个时候,我只能帮助你,因为你的问题没有提供太多的信息。