Rails:由用户对最常用的acts_as_taggable标记进行排序

时间:2010-08-13 14:13:51

标签: ruby-on-rails acts-as-taggable

我设置了两个模型:userpost。每个post belongs_to一个userpost也有标签,使用acts_as_taggable。在UserController#show我想列出用户使用的标签,从最常用的标签到较少使用的标签。

获取标签列表并不难,但我该如何对它们进行排序?我用它来找到标签:

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

任何人都可以解释我如何对标签进行排序吗?感谢。

1 个答案:

答案 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]}

也许有更好的方法。