Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在标记云上仅显示acts_as_taggable_中最流行的标记_Ruby On Rails_Ruby On Rails 3_Acts As Taggable On - Fatal编程技术网

Ruby on rails 在标记云上仅显示acts_as_taggable_中最流行的标记

Ruby on rails 在标记云上仅显示acts_as_taggable_中最流行的标记,ruby-on-rails,ruby-on-rails-3,acts-as-taggable-on,Ruby On Rails,Ruby On Rails 3,Acts As Taggable On,Acts as taggable工作得很好,但我想知道是否有办法将标记云限制在最流行的标记上?不是这样的,它看起来像是按照标签创建的顺序对我的云进行排序 但是让标签云只显示最流行的标签更有意义 我的控制器有: def styles_tag_cloud @tags = Tattoo.tag_counts_on(:styles).limit(40) end 我的观点是: <% tag_cloud(styles_tag_cloud, %w(css1 css2 css3 css

Acts as taggable工作得很好,但我想知道是否有办法将标记云限制在最流行的标记上?不是这样的,它看起来像是按照标签创建的顺序对我的云进行排序

但是让标签云只显示最流行的标签更有意义

我的控制器有:

  def styles_tag_cloud
     @tags = Tattoo.tag_counts_on(:styles).limit(40)
  end
我的观点是:

<% 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 %>

:taged,:controller=>:index,:id=>tag.name},:class=>css\u class%>

但是,所有这些都只是显示创建的前40个标记,然后根据每个标记的使用次数来调整每个标记的大小。您可以使用
MyModel.tag\u counts\u on(:tags)
来获得标记列表,按标记计数降序排列(最常用的标记优先),如果您想将其限制为特定的数字,您可以添加
.limit>(我的魔法号码)

因此,要在您的
Post
模型上获得10个最流行标签的列表,您可以执行以下操作:

@tag_counts = Post.tag_counts_on(:tags).limit(10)
如果您想查看每个标记使用了多少次,则
@tags
中的每个对象都有一个
count
属性,您可以查看


编辑:(摘自我下面的一条评论)…如果你想按照特定的顺序(首先是最常用的标记)使用一些外部定义的限制,你可以使用:
Post.tag\u counts\u on(:tags).order('count desc').limit(不管你想要多少)

根据文档,在您的情况下,您只需传递计算所需的选项(控制器):


您的视图保持不变。这里记录了!

上的标记计数:(在页面上搜索“标记云计算”)我更新了我的问题,tag_counts_on simple抓取了所有标签并对每个标签进行计数。我试图按照标签计数对它们进行排序,或者只显示最流行的标签,然后执行类似于
Post的操作。tag_counts_on(:tags)。order('count desc')。limit(无论您想要多少个标签)
。谢谢@Frost-这实际上是解决方案。
  def styles_tag_cloud
     @tags = Tattoo.tag_counts_on(:styles).limit(40)
  end