Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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 将单个记录从ActiveRecord模型对象传递到参数(或者如何在参数中传递多个字段)?_Ruby On Rails - Fatal编程技术网

Ruby on rails 将单个记录从ActiveRecord模型对象传递到参数(或者如何在参数中传递多个字段)?

Ruby on rails 将单个记录从ActiveRecord模型对象传递到参数(或者如何在参数中传递多个字段)?,ruby-on-rails,Ruby On Rails,轨道2.3.5 我有一个在表格中显示“employee”记录的视图,其中每个表格行都有一个复选框标记,用于选择该行的员工记录。表格位于表单标记内。该复选框将员工编号数组传递给一个方法,但我还需要它传递参数中记录first_name、last_name等的一些其他信息 最初,这看起来就像传递一个带有员工编号数组的参数 <% @employee_search.each do |e| %> <td><%= check_box_tag 'selected_subordin

轨道2.3.5

我有一个在表格中显示“employee”记录的视图,其中每个表格行都有一个复选框标记,用于选择该行的员工记录。表格位于表单标记内。该复选框将员工编号数组传递给一个方法,但我还需要它传递参数中记录first_name、last_name等的一些其他信息

最初,这看起来就像传递一个带有员工编号数组的参数

<% @employee_search.each do |e| %>
 <td><%= check_box_tag 'selected_subordinates[]', e.employee_number %></td>
 <td><%= e.employee_number %></td>
 <td><%= e.first_name %></td>
 <td><%= e.last_name %></td>
 ...
<% end %>
也许我应该使用我需要的字段为param构建一个数组-那么param将是一个数组数组?到目前为止,我还没有任何运气尝试搜索示例,例如当您需要设置由数组组成的param数组,或者传递单个模型对象记录并引用它时,该怎么做

谢谢-非常感谢

当您使用e作为参数时,Rails将e转换为字符串并传递您不能传递HTML表单中的对象,对吗?只是价值观。当您在params散列中看到时,它不是Employee对象,而是一个字符串,其内容是您在Employee对象上调用.to_s时得到的内容

传递ID会使您走上正确的轨道,但是一旦您获得了ID,您应该从数据库中查找具有该ID的员工

params[:selected_subordinates].each do |s|
  employee = Employee.find(s)
  puts employee.last_name
end
当然,这会一次加载一个,因此如果您有很多复选框,那么最终可能会生成大量查询。还可以使用“查找”方法根据ID数组查找多个对象:

employees = Employee.find(params[:selected_subordinates])
employees.each do |e|
  puts e.last_name
end

我想我可以这样做并拆分参数值:selected_substances[]'、e.employee_number+'、“+e.first_name+”、“+e.last_name谢谢。是的,我的第一个想法是查询每个员工的电话号码,但我不想走上查询每个选定项目的道路。因此,我可以使用您对所有选中项进行查询的方法,也可以对控制器中的每个数组元素执行选中的_下属[]'、e.employee_number+'、“+e.first_name+”、“+e.last_name with a.split'”,我确实做到了这一点。不过,我想我会对你的方法不那么反感。再次感谢!
params[:selected_subordinates].each do |s|
  puts s.last_name
end

undefined method `last_name' for "#<Employee:0xa946970>":String
params[:selected_subordinates].each do |s|
  puts s.last_name
end

undefined method `last_name' for 35:Fixnum
params[:selected_subordinates].each do |s|
  employee = Employee.find(s)
  puts employee.last_name
end
employees = Employee.find(params[:selected_subordinates])
employees.each do |e|
  puts e.last_name
end