2010-08-13 2 views
0

Я создал две модели: user и post. Каждый postbelongs_to a user. post s также имеют теги, используя act_as_taggable. На Я хочу перечислить те теги, которые пользователь использует, сортируя из наиболее используемых для менее используемых.Рельсы: Сортировка наиболее часто используемых тегов act_as_taggable пользователем

Получение списка тегов не сложно, но как я могу их отсортировать? Я использую это, чтобы найти теги:

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

Может кто-нибудь объяснить мне, как я могу сортировать теги? Благодарю.

ответ

0

можно использовать tag_counts метод, предоставленный плагин:

@user.posts.tag_counts 

подробнее здесь: http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids

EDIT:

основной простой код для сортировки:

@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]} 

может быть есть лучший способ сделать это.

+0

Учитывается только теги, а не сортировка их. – 2010-08-13 14:42:27

+0

ну, на данный момент у меня нет кода, чтобы сделать некоторый тест, кстати он должен вернуть некоторую структуру (массив или хеш) с тегами и их счет. то вы должны только сортировать его;) –

Смежные вопросы