RoR - 计算唯一值



我是RoR的初学者,我正在玩弄一个包含6000行数据的数据库。由于一开始的数据太多,因此我在控制器/索引视图中使用它,使索引表仅显示具有唯一项名称的数据行。

@glyphs_test = Glyph.group(:item)

在每一行旁边,我想显示特定项目在整个数据库中出现的次数。当我尝试这样做时,它可以工作,但我不知道如何将其打印到索引上。

Glyph.group(:item).uniq.count

例如,结果包括:

=> {"Eternal Fire" => 8, "Glyph of Adrenaline Rush" => 74} etc...

即使我只能打印出数字,我怎么能把它与表格相匹配?我想我在这里错过了一些关键的东西。我可以通过在show#controller中使用它而不是在索引#控制器中使用它来在单个记录中执行此操作。

@glyph = Glyph.find(params[:id])
@glyphs = Glyph.where(["item = ?", @glyph.item]).order('net_gain ASC')

提前感谢您的任何建议。也许我应该做一些更简单的事情,但必须有一个解决方案。

您可以使用如下所示的内容循环访问结果哈希

@glyph_counts = Glyph.group(:item).uniq.count
@glyph_counts.each do |key, value|
   #key is the item, value is the count, using key and value as the object is a hash
   # do your printing here
end

或者,如果您正在循环访问字形并尝试从结果中获取计数,则可以执行以下操作

@glyphs = Glyph.all
@glyph_counts = Glyph.group(:item).uniq.count
@glyph.each do |glyph|
  #something with your glyph
  count = @glyph_counts[@glyph.item]
end

最新更新