Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何实现控制器以处理一个或多个记录的创建?_Ruby On Rails_Ruby_Ruby On Rails 4_Controller_Save - Fatal编程技术网

Ruby on rails 如何实现控制器以处理一个或多个记录的创建?

Ruby on rails 如何实现控制器以处理一个或多个记录的创建?,ruby-on-rails,ruby,ruby-on-rails-4,controller,save,Ruby On Rails,Ruby,Ruby On Rails 4,Controller,Save,我正在使用RubyonRails4.1。我有一个嵌套的模型,在它的控制器中,我希望在提交一个或多个记录时执行RESTful创建操作来处理这些情况。也就是说,我的控制器创建操作是: def create @nester = Nester.find(:nester_id) @nesters_nested_objects = @nester.nested_objects.build(create_params) if @nnesters_ested_objects.save #

我正在使用RubyonRails4.1。我有一个嵌套的模型,在它的控制器中,我希望在提交一个或多个记录时执行RESTful创建操作来处理这些情况。也就是说,我的控制器创建操作是:

def create
  @nester = Nester.find(:nester_id)
  @nesters_nested_objects = @nester.nested_objects.build(create_params)

  if @nnesters_ested_objects.save
    # ...
  else
    # ...
  end
end

def create_params
  params.require(:nesters_nested_object).permit(:attr_one, :attr_two, :attr_three)
end
我希望它能够处理参数包含与一个对象相关的数据和包含与多个对象相关的数据这两种情况


我怎样才能做到?我应该实现一个新的控制器操作,可能称为create_multiple还是什么?处理这些案件有一种常见的做法?

好吧,如果你坚持在他们的巢穴之外创建这些记录,我可以建议这样做,最好是单独使用一种方法:

def create_multiple
  @nest = Nester.find(params[:nester])
  params[:nested_objects].each do |item|
    @nest.nested.new(item.permit(:attr_one, :attr_two, :attr_three))
  end
  if @nest.save
     ....
  else
     ....
  end
end

我相信通常的做法是创建嵌套记录以及父记录,其中包含accepts_nested_attributes_for.@Almaron-在我的情况下,该操作旨在用于公共API,我可以/不愿意使用accepts_nested_attributes_for,然后,我想您可以从params获取一个数组,并通过它进行写入。@Almaron-我应该实现一个新的控制器操作,可能称为create_multiple还是什么?