如何解决Rails循环显示重复结果
我有三个具有以下关联的模型:
class Product < ApplicationRecord
belongs_to :store
has_many :variants,dependent: :destroy
end
class Store < ApplicationRecord
has_many :variants
belongs_to :user
has_many :products,dependent: :destroy
end
class Variant < ApplicationRecord
belongs_to :product
belongs_to :store,optional: true
end
我使用以下方法计算每个用户的产品和型号:
@products = current_user.store.products.group(:subcategory_id).count
@variants = current_user.store.variants.group(:subcategory_id).count
以上返回此@products
=> {181=>1,185=>1}
而这个@variants
=> {181=>2,185=>1}
最后,当我尝试遍历以上每个散列时,结果正确显示,但它们也显示两次(重复结果)。关于如何解决此问题的任何想法?
<% @products.each do |product_key,product_value| %>
<% @variants.each do |variant_key,variant_value| %>
<%= @child_category.name %> - <%= @subcategory.name %><br>
Products: <%= product_value %><br>
Variants: <%= variant_value %><br>
Total Products: <%= product_value + variant_value %><br>
<% end %>
<% end %>
这是结果:
解决方法
这不是重复任何操作,这是预期的行为。它显示了每种产品及其变体。
您要遍历两个哈希,其中包含2对,因此外循环执行2次,内循环执行2 * 2 => 4
次。
这是预期的行为。
如果只想显示一对,则可以在该条件下添加子类别-
即我只想显示子类别为Boys的结果,则可以使用以下代码-
<% @products.each do |product_key,product_value| %>
<% @variants.each do |variant_key,variant_value| %>
<% if @subcategory.name == 'Boys' %>
<%= @child_category.name %> - <%= @subcategory.name %><be>
Products: <%= product_value %><be>
Variants: <%= variant_value %><be>
Total Products: <%= product_value + variant_value %><be>
<% end %>
<% end %>
<% end %>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。