Итерация по нескольким полям в данных публикации формы - PullRequest
0 голосов
/ 17 мая 2018

В моем приложении rails я в настоящее время могу получить данные поста формы из двух полей формы name="start" и name="end". Почтовые данные следующие:

start: 2018-05-18 12:00
end: 2018-05-18 12:00

Вот код, который принимает данные почты и что-то с ними делает.

post "/time" do
  time = DoTime.new
  start = params["start"]
  finish = params["end"]
  time.started_at = start
  time.finished_at = finish
  time.profile = current_user
  time.save
  redirect "/profile"
end

С тех пор я реализовал динамическую форму, которая позволяет пользователю дублировать начальное и конечное поля столько раз, сколько они захотят. Все, что нужно сделать, это добавить поля формы HTML на место перед отправкой и опубликовать ее вместе с формой. Пример новых почтовых данных здесь:

start: 2018-05-18 12:00
end: 2018-05-18 12:00
start: 2018-05-19 12:00
end: 2018-05-19 12:00

Мне интересно, как я могу перебрать рубин для поиска каждого экземпляра start и end и запустить приведенный выше код для каждого из найденных элементов. Любые указатели или советы? Я пробовал несколько разных способов, но продолжаю сталкиваться с ошибками.

Спасибо

1 Ответ

0 голосов
/ 17 мая 2018

Если я правильно понимаю ваш вопрос, вы ожидаете, что params[:start] и params[:end] будут содержать массив дат. Чтобы сделать это, вам нужно установить атрибут name для всех дубликатов полей start в значение «start []» и аналогично для полей end установить значение «end» []».

Теперь вы можете перебирать значения в вашем контроллере и создавать несколько объектов следующим образом:

post "/time" do
  # Assuming the number of starts and ends will be same, ...
  params[:start].count.times do |i|
    time = DoTime.new
    time.started_at = params[:start][i]
    time.finished_at = params[:end][i]
    time.profile = current_user
    time.save!
  end

  redirect "/profile"
end
...