【问题标题】:Updating multiple records in a single submit? - Rails 3在一次提交中更新多条记录? - 导轨 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 的无知,这整个方法都是错误的,我错过了一个技巧。有人对如何解决这个问题有任何建议吗?

【问题讨论】:

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


【解决方案1】:

我想通过查看视图代码中隐藏的person_id 字段,您在people modelperson model 之间建立了一个关联
如果您的关联设置正确,请使用

accepts_nested_attributes_for

并关注Rails guides for association basics
目前,我只能为您提供这么多帮助,因为您的问题中没有提供太多信息。

【讨论】:

  • 谢谢,一直在尝试这种方法,但根据文档更新仅适用于 1:1 关系。 "允许您指定仅可以更新现有记录。只有在没有现有记录时才可以创建新记录。此选项仅适用于一对一关联,对于集合关联将被忽略。此选项已关闭默认情况下。” :api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/…
猜你喜欢
  • 2012-11-06
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-13
相关资源
最近更新 更多