ruby-on-rails - 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 %>
这是结果:
解决方案
这不是重复任何东西,这是预期的行为。它显示了每个产品及其变体。
您正在循环两个散列,其中包含 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 %>
推荐阅读
- python - 如何在我正在处理的教程中修复此错误?
- node.js - 如何在没有原始驱动器的情况下安装节点
- python - 从 django restframework 连接到不同的 mongo 集群
- c# - 来自属性的字段的 ILGenerator 调用方法
- ruby-on-rails - ruby 模型中 nil:NilClass 的未定义方法“-”
- javascript - 如何将输入值放入 node.js 文件中的 JSON
- python - Jupyter Notebook 和 Colab 在运行随机森林模型时不断崩溃
- ios - Firebase 系统文件夹位于用户文档目录 - iOS
- arrays - 获取数组对象中的特定项目长度 [nodejs]
- php - 我们可以通过其IP地址而不是URL通过Curl获取服务器的http_code吗