formtastic - 表单字段中带有 has_many 的对象数组

Posted

技术标签:

【中文标题】formtastic - 表单字段中带有 has_many 的对象数组【英文标题】:formtastic - array of objects with has_many in the form field 【发布时间】:2015-01-13 12:55:13 【问题描述】:

我在标记控制器中有一个新动作。当用户点击“新分数”时,我需要显示一个包含该学生论文列表的表单。每篇论文都有一个用户需要选择的选项列表。

模型之间的关联是:

Mark.rb

 belongs_to :paper


 paper.rb

 has_many :options

 Option.rb

  belongs_to :paper

在@mark 的表单中,我需要使用“formtastic”显示所有论文和选项列表。

我试过了,

   <% @array_papers.each do |paper| %>
    <% options = paper.options %>

   <%= semantic_form_for paper, url:thinking_marks_path(student_id: @student.id) do |form| %>
        <li class="each-question">
          <%= form.input :paper, label: "paper[:name]" %>
          <%= semantic_fields_for :options, paper.object.options do |option|  %>
           <%= option.input :option, as: :check_boxes %>
          <% end %>


        </li>
    <% end %>

    </ul>

    <p> <%= link_to 'Save',thinking_marks_path( student_id: @student.id ),  :class => 'simple-button course-type' %>
    </p>

<% end %>

但它正在抛出错误:

undefined method `option' for #<Paper:0x0000000fe6d3e0>

我该怎么办?

【问题讨论】:

【参考方案1】:

form 变量是paper 对象的形式。

我建议您更好地命名表单变量,例如。 paper_formoption_form

这段代码应该可以工作:

  <%= semantic_fields_for :options, paper.object.options do |option_form|  %>
    <%= option_form.input :option, as: :check_boxes %>
  <% end %>

【讨论】:

以上是关于formtastic - 表单字段中带有 has_many 的对象数组的主要内容,如果未能解决你的问题,请参考以下文章

动态嵌套表单总是创建一个额外的空白条目 - 使用 formtastic_coocoon

fields_for、formtastic、ActiveMerchant 和验证错误

ruby on rails has_many 关系表单验证孩子

Flutter BLoC 库中带有验证的文本字段

覆盖 Bootstrap has-error 类

表单 ID 中带有 jQ​​uery 的通配符数字