2010-08-13 12 views
0

J'ai mis en place deux modèles: user et post. Chaque postbelongs_to un user. post s ont également des balises, en utilisant acts_as_taggable. Sur UserController#show je veux lister les étiquettes que l'utilisateur utilise, en triant du plus utilisé à moins utilisé.Rails: Trier les balises acts_as_taggable les plus utilisées par un utilisateur

Obtenir une liste de balises n'est pas difficile, mais comment puis-je les trier? Je l'utilise pour trouver les étiquettes:

@tags = [] 
@user.posts.each do |post| 
    @tags += post.tags 
end 

Quelqu'un peut-il m'expliquer comment je peux trier les étiquettes? Merci.

Répondre

0

vous pouvez utiliser la méthode tag_counts fourni par plug-in:

@user.posts.tag_counts 

plus d'info ici: http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids

EDIT:

un simple code de base pour le tri:

@tags = Hash.new(0) 
@user.posts.each do |post| 
    post.tags.each do |tag| 
    @tags[tag] += 1 if @tags.has_key?(tag) 
    end 
end 
# sorting 
@tags.sort{|a,b| a[1] <=> b[1]} 

peut-être il y a une meilleure façon de le faire.

+0

Ceci ne compte que les étiquettes, pas les trie. –

+0

bien, pour l'instant je n'ai pas de code pour faire un test, btw il devrait retourner une structure (array ou hash) avec des tags et leur nombre. alors vous devriez seulement le trier;) –