使用fields_for – Rails创建多个记录

我有两个模型, tasklist_itemstask has_many list_items 。 但是我希望能够创建task和许多list_items如果用户想要所有的一个forms。 这是目前的样子:

形成

       

任务控制器

  def new @task = @assignment.tasks.new @list_item = @task.list_items.build @all_list_items = [] end 

基本上我要做的是创建多个列表项和一个创建任务。 但是,如果我提交表单,我现在收到此错误

错误

 undefined method `description' for []:Array 

有人知道我做错了什么以及如何实现这个目标?

未定义的方法`description’for []:Array

为了描述错误的原因, fields_for接受record_object作为第二个参数, fields_for使用它来构造字段。 在这里,您传递的是@all_list_items ,这是一个数组并导致错误。

解决错误:

您应该传递@list_item而不是@all_list_items

 <%= fields_for :list_items, @list_item do |list_item_form| %> 

解决实际问题:

你想创建多个list_items ,你应该这样做

 def new @task = @assignment.tasks.new x.times do @list_item = @task.list_items.build end @all_list_items = [] end 

其中x是要创建的list_items ,例如,如果要创建三个list_items ,则将x替换为3

要么

使用cocoon gem动态创建嵌套表单。