Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails多记录表单仅保存最后一条记录的参数_Ruby On Rails_Ruby_Forms_Parameters - Fatal编程技术网

Ruby on rails Rails多记录表单仅保存最后一条记录的参数

Ruby 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

我试图为教师提供一种可以同时创建多个学生的表单。似乎大多数人都用嵌套属性来处理这个概念,但我很难理解当我只使用一个模型时该如何工作。在没有嵌套属性的情况下似乎可以实现这一点,但我的结果并没有按照作者建议的方式工作。students数组应该为表单的每个部分包含一个哈希。但是当我提交表单并检查参数时,数组中只存在一个散列

调整她的方法,我有一个控制器:

学生_controller.rb

  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]" %>