#ruby-on-rails
#ruby-on-rails
Вопрос:
Я выполняю инструкцию SQL в своем контроллере:
@lots = execute_statement("select date_trunc ('day', filled_at) as Fill_Date, shift_id, count(id) from liquor_lots where available = true group by date_trunc ('day', filled_at), shift_id order by Fill_Date")
На мой взгляд, я перебираю строки результирующего набора и генерирую массив каждого элемента
<%= form_with(url: add_path, method: "post") do |form| %>
<% @lots.each do |row| %>
<tr>
<td><%= form.text_field :fill_date, value:row['fill_date'], name: "fill_date[]" %></td>
<td><%= form.text_field :shift_id, value:row['shift_id'], name: "shift_id[]" %></td>
<td><%= form.check_box :all_pallets, name: "all_pallets[]" %></td>
</tr>
Мне нужно выполнить логику для первых двух параметров ( fill_date
и shift_id
), если флажок установлен. Итак, мой план состоит в том, чтобы пройти через all_pallets
параметр, и если он выбран, я получу доступ к данным в других массивах, используя индекс.
Контроллер:
all_pallets = params["all_pallets"]
filled_dates = params["fill_date"]
shift_ids = params["shift_id"]
all_pallets.each_with_index do |pallet, index|
#pseudo-code
if pallet is selected, perform logic based on filled_dates[index] and shift_ids[index]
Моя проблема в том, что если я использую check_box
, я получаю ‘0’ для каждого флажка плюс ‘1’ для всех флажков.
Если я использую check_box_tag
, я получаю только ‘1’ для выбранных строк и никаких элементов для непроверенных полей.
Мне нужно иметь 0 для непроверенных и 1 для проверенных, но общее количество элементов в массиве должно соответствовать другим массивам.
Например, если мой исходный запрос вернул 5 строк, и я установил 2 флажка:
с check_box_tag
помощью параметров = "...shift_id"=>["2", "1", "1", "2", "3"], "all_pallets"=>["1", "1"],
с check_box
помощью параметров = "...shift_id"=>["2", "1", "1", "2", "3"], "all_pallets"=>["0", "0", "1", "0", "1", "0", "0"]
и что мне нужно, так это "...shift_id"=>["2", "1", "1", "2", "3"], "all_pallets"=>["0", "1", "0", "1", "0"]
Как это можно сделать?
Комментарии:
1. Я думаю, вы можете попробовать
form.check_box :all_pallets, {}, "true", "false"
. Проверьте консоль в браузере, чтобы убедиться, что созданы правильные входные данные.2. Генерация входных данных не является проблемой. Это отправленные параметры, которые я не могу получить правильно.