如何接受参数并使用它们创建子对象

时间:2019-06-12 09:37:24

标签: ruby-on-rails

假设我有一个Parent对象,并且想在创建时附加Child对象。您如何在控制器中处理呢?

在我的表单视图中,我将拥有这些字段

  • 名称:name
  • 孩子的父母[:child]

但是,当我在强参数中包含:child[]时,这会导致错误。

我只是有点困惑,Rails实际上是如何处理此问题的,而我在网上找不到关于此的任何信息。任何帮助都会很棒。

2 个答案:

答案 0 :(得分:0)

class Parent
  has_many :childs, index_errors: true

  accepts_nested_attributes_for :childs, allow_destroy: true
end

class ParentsController
  def parents_params
    params.require(:parent).permit(parent_attributes_here_, 
      childs_attributes: [:id, :etc, :etc, :etc, :_destroy]
  end
end

index_errors将有助于显示特定子模型的错误。 :_destroy将允许销毁孩子

更多信息:click

答案 1 :(得分:-1)

尝试cocoon宝石here。它支持嵌套属性的动态形式。您可以使用此gem同时为Child对象添加许多parent对象。 README文件包括安装和使用指南。

要了解嵌套属性是什么,请阅读Rails api here