在一次提交中更新多条记录? - 导轨 3
Posted
技术标签:
【中文标题】在一次提交中更新多条记录? - 导轨 3【英文标题】:Updating multiple records in a single submit? - Rails 3 【发布时间】:2011-11-23 10:16:31 【问题描述】:我是 Rails 新手,遇到了一些困难......
我有一个页面显示表格中的记录列表,并希望用户能够进行更改、提交表单、运行验证和保存数据。
这是我目前所拥有的:
查看:
- @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 数组以查看发生了什么变化并将任何更改写回。
这感觉很糟糕,因为我必须明确比较每个字段,而且如果在中途由于验证错误而失败,我应该如何回滚任何更改并将消息显示给用户?
我希望由于我对 rails 的无知,这整个方法都是错误的,我错过了一个技巧。有人对如何解决这个问题有任何建议吗?
【问题讨论】:
看看***.com/q/5583568/800526的答案——更具体地说是railscasts.com/episodes/… 【参考方案1】:我想通过查看视图代码中隐藏的person_id
字段,您在people model
和person model
之间建立了一个关联。
如果您的关联设置正确,请使用
accepts_nested_attributes_for
并关注Rails guides for association basics。 目前,我只能为您提供这么多帮助,因为您的问题中没有提供太多信息。
【讨论】:
谢谢,一直在尝试这种方法,但根据文档更新仅适用于 1:1 关系。 "允许您指定仅可以更新现有记录。只有在没有现有记录时才可以创建新记录。此选项仅适用于一对一关联,对于集合关联将被忽略。此选项已关闭默认情况下。” :api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/…以上是关于在一次提交中更新多条记录? - 导轨 3的主要内容,如果未能解决你的问题,请参考以下文章