rug*_*ert 5 ruby-on-rails acts-as-taggable-on ruby-on-rails-3
Acts-as-taggable效果很好,但是我想知道是否有办法将标签云限制为只有最流行的标签?是的,它看起来像按照创建标签的顺序对我的云进行排序.
但是让标签云只显示最受欢迎的标签更有意义.
我的控制器有:
def styles_tag_cloud
@tags = Tattoo.tag_counts_on(:styles).limit(40)
end
Run Code Online (Sandbox Code Playgroud)
我的观点是:
<% tag_cloud(styles_tag_cloud, %w(css1 css2 css3 css4)) do |tag, css_class| %>
<%= link_to tag.name, { :action => :tagged, :controller =>:index, :id => tag.name }, :class => css_class %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
但所有这一切都是显示创建的前40个标签,然后根据其使用的次数确定每个标签的大小
您可以使用MyModel.tag_counts_on(:tags)获取标记列表,按标记计数降序排序(最常用的标记首先),如果要将其限制为特定数字,则可以添加.limit(my_magic_number)到标记列表.
因此,要获得Post模型中10个最受欢迎的标签列表,您可以执行以下操作:
@tag_counts = Post.tag_counts_on(:tags).limit(10)
Run Code Online (Sandbox Code Playgroud)
如果您想查看每个标记的使用次数,每个标记中的对象@tags都有一个count您可以查看的属性.
编辑:(摘自我下面的一条评论)...如果你想要特定顺序的标签(最常用的标签)具有一些外部定义的限制,你可以使用: Post.tag_counts_on(:tags).order('count desc').limit(however_many_you_want)
| 归档时间: |
|
| 查看次数: |
2158 次 |
| 最近记录: |