Rails: tag acts_as_taggable Ordina più utilizzato da un utente
-
28-09-2019 - |
Domanda
Ho creato due modelli: user
e post
. Ogni post
belongs_to
un user
. post
s hanno anche i tag, utilizzando acts_as_taggable. Su UserController#show
voglio elencare i tag gli usi degli utenti, l'ordinamento dal più utilizzato al meno utilizzato.
Ottenere un elenco di tag non è difficile, ma come posso risolvere? Io lo uso per trovare i tag:
@tags = []
@user.posts.each do |post|
@tags += post.tags
end
Qualcuno mi può spiegare come posso ordinare i tag? Grazie.
Soluzione
è possibile utilizzare il metodo tag_counts fornito dal plugin:
@user.posts.tag_counts
maggiori informazioni qui: http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids
EDIT:
un semplice codice di base per l'ordinamento:
@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]}
Forse c'è un modo migliore di farlo.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow