Рельсы 2.3.5
У меня есть представление, отображающее записи «сотрудник» в таблице, где каждая строка таблицы имеет check_box_tag для выбора этой (строки) записи сотрудника (таблица находится внутри form_tag). Флажок передает массив номеров служащих методу, но мне также нужно, чтобы он передавал некоторую другую информацию из записи (имя_символа, фамилия и т. Д.) В параметрах.
Вначале это выглядело как (просто передавая параметр с массивом номеров сотрудников)
<% @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 %>
Я не уверен, что это было правильно, но я подумал, что должен передать всю запись ('e') в параметре:
<% @employee_search.each do |e %>
<td><%= check_box_tag 'selected_subordinates[]', e %></td>
<td><%= e.employee_number %></td>
<td><%= e.first_name %></td>
<td><%= e.last_name %></td>
...
<% end %>
Массив параметров теперь выглядит так:
"selected_subordinates"=>["#<Employee:0xa946970>", "#<Employee:0xa946910>", "#<Employee:0xa9468b0>"]
В этот момент я думал, что все будет в порядке, и я просто прохожу через объекты в массиве параметров, ссылаясь на поля записи, но получил неопределенную ошибку метода:
params[:selected_subordinates].each do |s|
puts s.last_name
end
undefined method `last_name' for "#<Employee:0xa946970>":String
Я начал задаваться вопросом, был ли по какой-то причине весь объект модели передан вместо одной записи из объекта. Но попытка [0] .last_name привела к другой ошибке.
params[:selected_subordinates].each do |s|
puts s.last_name
end
undefined method `last_name' for 35:Fixnum
Может быть, мне следовало бы использовать поля, которые мне нужны для создания массива для параметра - таким образом, этот параметр был бы массивом массивов? До сих пор мне не повезло, когда я пытался найти пример того, что делать, когда вам нужно настроить массив параметров из массивов или передать одну запись объекта модели (и обратиться к ней).
Спасибо - высоко ценится!