Ruby on rails Rails多记录表单仅保存最后一条记录的参数
我试图为教师提供一种可以同时创建多个学生的表单。似乎大多数人都用嵌套属性来处理这个概念,但我很难理解当我只使用一个模型时该如何工作。在没有嵌套属性的情况下似乎可以实现这一点,但我的结果并没有按照作者建议的方式工作。students数组应该为表单的每个部分包含一个哈希。但是当我提交表单并检查参数时,数组中只存在一个散列 调整她的方法,我有一个控制器: 学生_controller.rbRuby on rails Rails多记录表单仅保存最后一条记录的参数,ruby-on-rails,ruby,forms,parameters,Ruby On Rails,Ruby,Forms,Parameters,我试图为教师提供一种可以同时创建多个学生的表单。似乎大多数人都用嵌套属性来处理这个概念,但我很难理解当我只使用一个模型时该如何工作。在没有嵌套属性的情况下似乎可以实现这一点,但我的结果并没有按照作者建议的方式工作。students数组应该为表单的每个部分包含一个哈希。但是当我提交表单并检查参数时,数组中只存在一个散列 调整她的方法,我有一个控制器: 学生_controller.rb def multi @student_group = [] 5.times do
def multi
@student_group = []
5.times do
@student_group << Student.new
end
end
<%= 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 %>
def多重
@学生组=[]
5.5倍
@学生组“3Xpi4XeqXuPs9jQvevy+nvgb1hiproddzwq6ed7oljr3tr2fhx9js6fn/F9xYcpgfDckCBOC2CoN+MrlFU0Bg=”,“学生”=>{“名字”=>“fff”,“姓氏”=>“ggg},“提交”=>“保存更改”,“控制器”=>“学生”,“操作”=>“创建”}允许:false>
一个名为“fff ggg”的学生只包含一个。对于不同的学生,应该有另外四个哈希
提前感谢您的帮助。
的字段仅与的表单一起使用。
的指的是它希望您使用的模型。因为您试图构建一个没有模型的表单,所以必须构造自己的输入字段名
不要为
使用字段,而是使用表单标记帮助程序呈现每个输入,例如
<%= label_tag "students__first_name", "First Name" %>
<%= text_field_tag "students[][first_name]" %>
……等等
关键是字段名中包含[]
,以指示students参数将是一个哈希数组。你告诉fields\u for
被称为students[]
几乎就得到了它,但是fields\u for
忽略了它,因为它需要一个模型才能正常工作。这很有效。非常感谢。如果你不介意的话,我不熟悉双下划线语法。如“学生的名字”。你知道这叫什么吗,这样我就可以读更多了?这只是Rails使用该方法将文本字段的输入名“students[][名字]”
转换为its id的方式。标签应该有一个for
属性,该属性指定标签用于哪个输入ID(以便单击标签将光标焦点放在输入上)。因此,label\u-tag
的第一个参数是text\u-field\u-tag
的第一个参数的净化id版本,我们必须这样做,因为常规表单标记帮助程序不适合您。非常好。再次感谢。
<%= label_tag "students__first_name", "First Name" %>
<%= text_field_tag "students[][first_name]" %>