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...

затем итерируйте по дням и продуктам и вставьте соответствующий тег выбора в таблицу

Другие вопросы по тегам