Я использую Простую форму в своем отслеживании ресурсов электронной торговли в Rails 6, и мне нужно иметь несколько выборок коллекции в моей форме, которые отображаются на основе ассоциации.
Вотмодель данных:
Product
has_many Option(s)
Option
has_many Choice(s)
belongs_to Product
Choice
has_many Variant(s)
belongs_to Option
Variant
belongs_to Choice(s)
Таким образом, продукт может выглядеть следующим образом:
Product => T-Shirt
Options => Size { choices: small, medium, large }, Color { choices: red, green, blue }
Variant #1 => T-Shirt in Medium Red, etc.
Как создать выборку для параметров продукта, если не у каждого продукта будет одинаковое числовариантов, которые клиент должен будет выбрать, такие как размер или цвет?Некоторые продукты могут иметь 0 вариантов, другие 1 (например, просто цвет), 2 (например, размер и цвет), 3 и т. Д.
Итак, в форме Вариант я хотел бы собрать коллекции, которые принадлежатсвязанный продукт.Я могу показать их в представлении «Вариант #» следующим образом:
<ul>
<% @product.options.each do |option| %>
<li>
<%= option.name %>
<ul>
<% option.choices.each do |choice| %>
<li><%= choice.name %></li>
<% end %>
</ul>
</li>
<% end %>
</ul>
Это работает, как и ожидалось, в представлении «Вариант # шоу».
Но как вы делаете то же самое исобрать 0 или более вариантов с их связанными вариантами в форме варианта с collection_select?Я использую простую форму, поэтому я пытаюсь что-то вроде этого, но это не работает, и я заблокирован:
<% @variant.product.options.each do |option| %>
<div class='form-row'>
<div class='col'>
<%= f.label option.name %>
<% option.choices.each do |choice| %>
<%= f.association choice %>
<% end %>
</div><!-- /.col -->
</div><!-- /.form-row -->
<% end %>
Эта версия формы дает мне следующую ошибку:
RuntimeError in Variants#edit