Rails: сортировка наиболее часто используемых тегов activ_as_taggable пользователем
Я создал две модели: user
а также post
, каждый post
belongs_to
user
, post
У них также есть теги с использованием act_as_taggable. На UserController#show
Я хочу перечислить теги, которые использует пользователь, сортируя от наиболее используемых к менее используемым.
Получить список тегов несложно, но как их отсортировать? Я использую это, чтобы найти теги:
@tags = []
@user.posts.each do |post|
@tags += post.tags
end
Может кто-нибудь объяснить мне, как я могу сортировать теги? Благодарю.
1 ответ
Решение
Вы можете использовать метод tag_counts, предоставляемый плагином:
@user.posts.tag_counts
больше информации здесь: http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids
РЕДАКТИРОВАТЬ:
простой простой код для сортировки:
@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]}
может быть, есть лучший способ сделать это.