在一个页面上一次编辑/更新多个对象

时间:2017-11-29 14:31:51

标签: ruby-on-rails ruby ruby-on-rails-5

我希望能够一次编辑/更新多个对象,即为所有用户呈现电子邮件字段的页面。

标准方法不起作用:

  • form_for需要一个id

  • 的对象
  • :put的{​​{1}}请求还需要user_path参数

如何生成表单以更新多个用户?我只想使用内置的Rails表单,而不是第三方表单。

1 个答案:

答案 0 :(得分:1)

创建一个form_for到一个新的端点(而不是默认的PUT),你没有更新1个资源,该端点使得废话被使用。

PUT / resource / bulk(例如)

html(我还没有测试过这只是一个方案):

form_tag '/resource/bulk', method: :put do
  @resources.each do |resource|
    text_field_tag("#{resource.id}[email]")
  end
end

动作:

#params => { 1 => { "email" => "foo@foo.com" }, 2 => { "email" => "bar@bar.com" } }
def bulk
  resources = params[:form]
  Resource.update(resources.keys, resources.values)
end

这只是一个有效解决方案的模式,我现在没有任何Rails应用程序或irb来测试此解决方案。