Как создать форму, в которую вводятся несколько элементов модели?
-
18-09-2019 - |
Вопрос
У меня есть простое приложение для торговой точки, написанное на Ruby, Rails и Hobo.
Первоначально предполагалось, что одновременно будет продаваться только один продукт, теперь клиент хочет добавить в модель продаж несколько продуктов.
Кроме того, я использую бренды для категоризации продуктов, а в своей новой форме продажи я использую ajax для заполнения метода выбора продукта после выбора бренда в другом меню выбора.
поэтому я хочу использовать свою текущую систему и просто изменить мою новую форму продажи, если это возможно, чтобы добавить в продажу несколько продуктов
Решение 3
мне пришлось создать модель тележки как контейнера для продуктов, затем приступить к использованию моей продажи с тележкой, а затем дальше..проверки и прочее пришлось перепрограммировать
Другие советы
Я думаю, у тебя есть has_one
Связь между продажей и одним продуктом.
Идея состоит в том, чтобы изменить это отношение на has_and_belongs_to_many.
Таким образом, в вашей базе данных может быть много продуктов для одной продажи и много продаж для одного продукта.
А для реализации можно использовать вложенные атрибуты чтобы отобразить продукты для одной продажи, а также добавить или удалить некоторые из них.
Вероятно, вам нужно изменить значения, публикуемые из формы, с одного продукта на несколько.Прежде чем вы, вероятно, написали что-то вроде этого:
product_id = 123 product_qty = 1
и теперь ты хочешь опубликовать что-то вроде этого
Product_id [0] = 123 Product_Qty [0] = 1 Product_id [1] = 456 Product_QTY [1] = 7
или еще лучше
Продукт [123] .QTY = 1 продукт [456] .QTY = 7
В вашей форме вам нужно будет создать эти переменные продукта и сделать их разными.Затем отправьте их в ту же форму, которую используете, но посмотрите логи и посмотрите, как Rails сопоставляет их с объектом params.Затем в вашем контроллере мы используем это сопоставление для извлечения нескольких объектов.
Я многому научился из скриншотов Railscast.Они не занимают много времени, и наблюдать, как кто-то решает проблемы менее чем за 10 минут, ТАК весело.Попробуй это http://railscasts.com/episodes/73-complex-forms-part-1