我在Rails 6电子商务库存跟踪中使用Simple Form,并且我需要在表单中基于关联显示多个集合选择。
这是数据模型:
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个等等。
因此,在“变体”表单上,我想收集属于关联产品的集合。我可以这样在Variant#show视图上显示它们:
<ul>
<% @product.options.each do |option| %>
<li>
<%= option.name %>
<ul>
<% option.choices.each do |choice| %>
<li><%= choice.name %></li>
<% end %>
</ul>
</li>
<% end %>
</ul>
这在Variants#show视图中按预期工作。
但是您如何做同样的事情,并使用collection_select在Variant表单中收集0个或多个Options及其相关选项?我使用的是简单表单,所以我正在尝试类似的方法,但是它不起作用并且被阻止了:
<% @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