Rails: Trier Tags plus utilisés par un utilisateur acts_as_taggable
-
28-09-2019 - |
Question
J'ai mis en place deux modèles: user
et post
. Chaque post
belongs_to
un user
. post
s ont également des balises, en utilisant acts_as_taggable. Sur UserController#show
Je veux la liste des tags les utilisations de l'utilisateur, le tri de la plupart utilisés à moins utilisé.
Obtenir une liste des balises est pas difficile, mais comment puis-je les trier? J'utilise ceci pour trouver les tags:
@tags = []
@user.posts.each do |post|
@tags += post.tags
end
Quelqu'un peut-il me expliquer comment je peux trier les balises? Merci.
La solution
vous pouvez utiliser la méthode de tag_counts fournie par plug-in:
@user.posts.tag_counts
plus d'infos ici: http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids
EDIT:
un code de base simple 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.