2012-08-07 3 views
0

Je suis un débutant chez RoR et je joue avec une base de données qui a 6000 lignes de données. Puisqu'il y a tellement de données pour commencer, j'ai la table d'index affichant seulement les rangées de données qui ont des noms uniques d'article en utilisant ceci dans la vue de contrôleur/index.RoR - compter des valeurs uniques

@glyphs_test = Glyph.group(:item) 

À côté de chaque ligne, je souhaite afficher le nombre de fois où cet élément particulier apparaît dans la base de données entière. Lorsque j'essaie cela, cela fonctionne mais je ne sais pas comment l'imprimer sur l'index.

Glyph.group(:item).uniq.count 

résultats avec, par exemple:

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

Même si je suis en mesure d'imprimer le numéro que dans ce domaine, comment puis-je le faire correspondre à la table? Je pense qu'il me manque quelque chose de crucial ici. Je suis capable de le faire dans l'enregistrement individuel en l'utilisant dans le contrôleur show # mais pas dans le contrôleur d'index #.

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

Merci d'avance pour tout conseil. Peut-être que je devrais faire quelque chose de plus simple mais il doit y avoir une solution à cela.

Répondre

0

Vous pouvez parcourir vos résultats hash avec quelque chose comme ce qui suit

@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 

Ou si vous Itère vos Glyphes et en essayant d'obtenir le nombre de résultats, vous pourriez faire la

suivante
@glyphs = Glyph.all 
@glyph_counts = Glyph.group(:item).uniq.count 

@glyph.each do |glyph| 
    #something with your glyph 
    count = @glyph_counts[@glyph.item] 
end 
+0

C'est fait! Je vous remercie! – user1582261

Questions connexes