Rails: Sortieren am häufigsten verwendeten acts_as_taggable-Tags von einem Benutzer
-
28-09-2019 - |
Frage
Ich habe zwei Modelle aufgebaut: user
und post
. Jeder post
belongs_to
eine user
. post
s auch Tags, acts_as_taggable verwenden. Auf UserController#show
möchte ich die Tags verwendet der Benutzer aufzulisten, von den meisten auf weniger verwendet sortieren.
eine Liste von Tags zu bekommen ist nicht schwer, aber wie kann ich sie sortieren? Ich benutze dies die Tags zu finden:
@tags = []
@user.posts.each do |post|
@tags += post.tags
end
Kann mir jemand erklären, wie ich die Tags sortieren? Danke.
Lösung
Sie könnten tag_counts Methode Plugin zur Verfügung gestellt verwenden:
@user.posts.tag_counts
Weitere Informationen hier: http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids
EDIT:
ein Grund einfacher Code für die Sortierung:
@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]}
Vielleicht gibt es einen besseren Weg, es zu tun.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow