如何解决嵌套表单循环额外运行一次
我有一个 product_form,其中 product_categories 是一个嵌套表单。这是一个部分,因此添加和编辑表单是相同的。
<%= f.fields_for :product_categories do |c| %>
<div class="custom-select">
<div class="select-tags">
<% if !@product.sub_categories.present? %>
<%= select_tag :main_category,options_from_collection_for_select(MainCategory.all,:id,:title,selected: (@main_category || nil)),{class: "select2 buyer_select2 js-example-basic-single categories-select main-select",onchange: "",prompt: "Select Main Category"} %>
<%= select_tag :'category','',{class: "select2 buyer_select2 js-example-basic-single categories-select category-select",prompt: "Select Category"} %>
<%= c.select :sub_category_id,{class: "select2 buyer_select2 js-example-basic-single categories-select ",prompt: "Select Sub Category"} %>
<%= c.link_to_remove "Remove" %>
<% else %>
<% if c.object.sub_category.present? %>
<%= select_tag :main_category,selected: ( c.object.sub_category.category.main_category.id || nil)),{class: "categories-select main-select",prompt: "Select Main Category"} %>
<% @categories = Category.where(main_category_id: c.object.sub_category.category.main_category.id) %>
<%= select_tag :'category',options_from_collection_for_select(@categories,selected: ( c.object.sub_category.category.id || nil)),{class: "category-select",prompt: "Select Category"} %>
<% @sub_categories = SubCategory.where(category_id: c.object.sub_category.category.id) %>
<%= c.select :sub_category_id,options_from_collection_for_select(@sub_categories,"id","title",selected: ( c.object.sub_category.id || nil)),prompt: "Select something" %>
<%= c.link_to_remove "Remove" %>
<% end %>
<% end %>
</div>
</div>
<% end %>
<%= f.link_to_add 'Add Category',:product_categories,class: 'icon-img' %>
但是,该表单不适用于编辑。 nested_form 显示已选择的下拉列表。但它会额外运行一次。如果添加了 2 个类别,它将运行 3 次。我得到了绑定撬的精确计数。我无法理解这一点。因此,我不得不在 else 块中放置另一个 if 条件,因此添加类别按钮不起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。