使用act-as-taggable-on如何在我的应用中找到top,比方说10个标签?

基本上,我想根据标签的数量对所有标签进行排序。

我正在尝试使用标签创建导航。 所以我想只显示前5,10,15,X标签,这些标签按照标记的项目数排序。

所以我不能在模型上做任何操作,并且没有一个控制器我可以在任何一个中做到 – 我可能只需要在导航视图中进行部分操作。

但我甚至不知道如何查询act-as-taggable-on以允许我在系统中找到顶部的X标签​​。

如何使用act-as-taggable-on进行此操作?

我试过Tag模型,但这似乎不起作用。

编辑1

当我调用Item.tag_counts ,这就是我所看到的:

 > Item.tag_counts (17.4ms) SELECT items.id FROM "items" ActsAsTaggableOn::Tag Load (17.1ms) SELECT tags.*, taggings.tags_count AS count FROM "tags" JOIN (SELECT taggings.tag_id, COUNT(taggings.tag_id) AS tags_count FROM "taggings" INNER JOIN items ON items.id = taggings.taggable_id WHERE (taggings.taggable_type = 'Item' AND taggings.context = 'tags') AND (taggings.taggable_id IN(13)) GROUP BY taggings.tag_id HAVING COUNT(taggings.tag_id) > 0) AS taggings ON taggings.tag_id = tags.id => [#, #] 

这是系统中的2个标签。 订购了吗? 如何判断每个项目被标记了多少?

您可以使用模型类上的tag_counts来检索标记列表及其各自的计数。

具有默认“技能”范围的用户模型示例(由文档提供 )。

 User.skill_counts # => [,...] 

您也可以使用基本相同的tag_counts_on(scope, options)

此外,还有一个关于这个主题的 RailsCast,解释了这个gem:

问题编辑后编辑: Item.tag_counts的列表是具有count属性的标签列表。 我不确定它们是否已经排序,但你可以通过这个属性对它们进行排序,如下所示:

 tags = Item.tag_counts.sort_by {|tag| tag.count} 

编辑最终答案目的

或者上面查询的Rails 3版本:

 tags = Item.tag_counts.order(:count)