首页 > 解决方案 > 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

以上返回 this@products => {181=>1, 185=>1} 和 this@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 %>

这是结果:

在此处输入图像描述

标签: ruby-on-railsruby

解决方案


这不是重复任何东西,这是预期的行为。它显示了每个产品及其变体。

您正在循环两个散列,其中包含 2 对,因此外循环执行 2 次,内循环执行2 * 2 => 4次数。

这是预期的行为。

如果你只想显示一对,你可以在那里为子类别添加 if 条件 -

即我只想显示子类别为男孩的结果,然后您可以使用以下代码 -

<% @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 %>

推荐阅读