Ruby on rails 什么';在一个Rails表单中编辑单个类的多个对象的最佳方法是什么?

Ruby on rails 什么';在一个Rails表单中编辑单个类的多个对象的最佳方法是什么?,ruby-on-rails,ruby-on-rails-3,forms,haml,Ruby On Rails,Ruby On Rails 3,Forms,Haml,我正在开发一个Rails表单,它允许用户通过一次提交来编辑一个类的许多对象的属性。我最初的直觉是为块创建一个外部的表单,然后使用的字段迭代其中的项 但是,没有对象与表单将修改的对象具有一对多关系,因此在我看来,没有对象可以正确地传递到表单中 在任何情况下,我想看到的是一个表单的示例,它可以同时修改多个对象,而无需调用“父”对象。也许这将涉及表单标签 (注意:我在haml中工作,所以haml中的答案将非常棒,尽管没有必要。)好的,有一个父对象将使它更容易 对于许多对象的批量更新,关键是使用正确的输

我正在开发一个Rails表单,它允许用户通过一次提交来编辑一个类的许多对象的属性。我最初的直觉是为块创建一个外部的
表单,然后使用
字段迭代其中的项

但是,没有对象与表单将修改的对象具有一对多关系,因此在我看来,没有对象可以正确地传递到
表单中

在任何情况下,我想看到的是一个表单的示例,它可以同时修改多个对象,而无需调用“父”对象。也许这将涉及
表单标签


(注意:我在haml中工作,所以haml中的答案将非常棒,尽管没有必要。)

好的,有一个父对象将使它更容易

对于许多对象的批量更新,关键是使用正确的输入名称,以便rails将参数解析为数组,即

@posts.each do |post|
  fields_for "posts[#{post.id}]", post do |p|
    p.text_field :name
    p.hidden_field :id
  end
end
查看生成的html源代码,查看文本输入得到的名称属性。如果这样做是正确的,params[:posts]现在将是控制器中的一个散列,您可以更新它


也应该是相关的

在我的实际情况中还有一些额外的皱纹,但我希望这里有一些伪代码可以说明我所采取的方法:

 = form_tag url_for(:controller => "the_controller",
                     :action => "update") do
     @objects_to_be_updated.each do |object|
       = check_box_tag "[desired_path][through_the][parameters_hash]", true, object.boolean_attibute
       = text_field_tag "[another_path][through_the][parameters_hash]", object.text_attribute
     end
 end
等等


使用表单帮助程序的
\u标记
变体(不需要与活动记录模型关联)有点麻烦,但似乎也能让您更好地控制结果参数的结构。

感谢您的回复。我没有意识到
fields\u不需要对象作为参数。与此同时,我已经找到了自己的解决方案,到目前为止,这似乎是可行的。我会把它贴在下面。