使用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)
- Bundler :: RubyVersionMismatch:您的Ruby版本是1.9.3,但您的Gemfile指定为2.0.0
- Rails:after_create停止保存时出现exception
- Ace编辑器使用rails 4预编译资产疯狂
- rails中的更新路由对after_action反应不佳?
- 关闭浏览器时会话未被破坏 – RailsTutorial.org
- Rails 3:Relation.count和Relation.all.count之间的区别
- Rails Installtion错误:’primefaces’本机gem需要安装构建工具
- 如何使用Rails发条gem来运行rake任务?
- Rails 4 – 研究不显示