我设置了两个模型:user
和post
。每个post
belongs_to
一个user
。 post
也有标签,使用acts_as_taggable。在UserController#show
我想列出用户使用的标签,从最常用的标签到较少使用的标签。
获取标签列表并不难,但我该如何对它们进行排序?我用它来找到标签:
@tags = []
@user.posts.each do |post|
@tags += post.tags
end
任何人都可以解释我如何对标签进行排序吗?感谢。
答案 0 :(得分:0)
你可以使用插件提供的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]}
也许有更好的方法。