【问题标题】:Showing only the most popular tags in the acts_as_taggable_on tag cloud仅显示acts_as_taggable_on 标签云中最流行的标签
【发布时间】:2011-10-08 15:06:15
【问题描述】:

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

但这只是显示创建的前 40 个标签,然后根据每个标签的使用次数调整每个标签的大小

【问题讨论】:

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


    【解决方案1】:

    您可以使用MyModel.tag_counts_on(:tags) 获取标签列表,按标签计数降序排列(最常用的标签在前),如果您想将其限制为特定数字,您只需将.limit(my_magic_number) 附加到它。

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

    @tag_counts = Post.tag_counts_on(:tags).limit(10)
    

    如果您想查看每个标签被使用了多少次,@tags 中的每个对象都有一个您可以查看的count 属性。

    编辑:(从下面我的一个 cmets 中提取)...如果您希望标签按特定顺序(最常用的标签在前)并具有一些外部定义的限制,您可以使用:Post.tag_counts_on(:tags).order('count desc').limit(however_many_you_want)

    【讨论】:

    • tag_counts_on 记录在这里:github.com/mbleigh/acts-as-taggable-on(在页面上搜索“标签云计算”)
    • 我更新了我的问题,tag_counts_on 简单地抓取所有标签并计算每个标签。我尝试按标签计数对它们进行排序或仅显示最受欢迎的标签
    • 好吧,那就做Post.tag_counts_on(:tags).order('count desc').limit(however_many_you_want)之类的事情。
    • 谢谢@Frost - 这实际上是解决方案。
    【解决方案2】:

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

      def styles_tag_cloud
         @tags = Tattoo.tag_counts_on(:styles).limit(40)
      end
    

    您的观点保持不变。问候!

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多