2011-11-23 62 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