Rails: как мне отличить макет формы от потока модели данных?
У меня есть модель данных, которая представляет еженедельный заказ. Например. мой заказ может быть
Monday: 2 x coffee
Tuesday: 2 x tea
Wednesday: 3 x coffee, 4x tea
Я оплачиваю свой заказ в конце недели.
Я представляю это как:
Order
has_many: days
Day
has_many: line_items
и у меня есть форма вида:
form_for @order
fields_for :days
fields_for :line_items
который производит форму как
Monday
Tea x 2
Coffee x 0
Tuesday
Tea x 1
Coffee x 3
Wednesday
Tea x 1
Coffee x 2
Я хочу, чтобы моя форма была такой:
Monday Tuesday Wednesday
Coffee 2 1 1
Tea 0 3 2
Add+
Я могу сделать это путем тщательного цикла Order.days.each do |day| day.each и т. д. пытается выяснить имя поля ввода "order[]days[]line_items[]" и добавляет скрытые переменные для line_item и day, но это оказывается сложнее, чем кажется на первый взгляд.
Я пропускаю более простой способ?
1 ответ
Решение
Я сделал так, чтобы собрать элементы формы в хеш и добавить их в форму после
form_for @order
fields_for :days
fields_for :line_items
hash[line_item.product][day.theday] = select_tag...
затем итерируйте по дням и продуктам и вставьте соответствующий тег выбора в таблицу