【发布时间】:2016-08-18 21:22:47
【问题描述】:
我正在尝试为教师提供一种可以同时创建多个学生的表单。似乎大多数人使用嵌套属性来处理这个概念,但是当我只使用一个模型时,我很难理解它是如何工作的。 This article 似乎可以在没有嵌套属性的情况下实现这一目标,但我的结果并没有按照作者建议的方式工作。学生数组应该为表格的每一部分包含一个哈希值。但是当我提交表单并检查参数时,数组中只存在一个哈希。
调整她的方法,我得到了这个控制器:
students_controller.rb
def multi
@student_group = []
5.times do
@student_group << Student.new
end
end
(我使用了一个我称之为“multi”的动作,因为它与常规的“create”动作不同,后者一次只创建一个学生。我尝试将所有内容都移到常规的 create 动作中,但我得到了相同的结果。)
观点:
multi.html.erb
<%= form_tag students_path do %>
<% @student_group.each do |student| %>
<%= fields_for 'students[]', student do |s| %>
<div class="field">
<%= s.label :first_name %><br>
<%= s.text_field :first_name %>
</div>
<div class="field">
<%= s.label :last_name %><br>
<%= s.text_field :last_name %>
</div>
<% end %>
<% end %>
<div class="actions">
<%= submit_tag %>
</div>
<% end %>
结果:
(byebug) params
<ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"3Xpi4XeqXuPs9jQvevy+nvGB1HiProddZzWq6Ed7Oljr3TR2fhx9Js6fN/F9xYcpgfDckCBOC2CoN+MrlFU0Bg==", "students"=>{"first_name"=>"fff", "last_name"=>"ggg"}, "commit"=>"Save changes", "controller"=>"students", "action"=>"create"} permitted: false>
只包含一个名为“fff ggg”的学生。应该有其他四个不同学生的哈希值。
提前感谢您的任何见解。
【问题讨论】:
标签: ruby-on-rails ruby forms parameters