0

私は 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')

アドバイスをよろしくお願いします。おそらく、もっと簡単なことをする必要がありますが、これには解決策が必要です。

4

1 に答える 1

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
于 2012-08-07T15:10:11.920 に答える