RoR - 计算唯一值

时间:2012-08-07 14:59:25

标签: ruby-on-rails

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

@glyphs_test = Glyph.group(:item)

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

Glyph.group(:item).uniq.count

结果,例如:

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

即使我只能在此打印出数字,我怎样才能将它与表格相匹配?我想我在这里缺少一些至关重要的东西。我可以在show#controller中使用它来在单个记录中执行此操作,但不能在index#controller中使用。

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容迭代结果哈希

@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