2011-10-08 11 views
5

タグクラウドを最も人気のあるタグのみに限定する方法があるのか​​どうかは驚くべきことでしたが、それは、タグが作成された順序で私の雲を注文するようなものではありません。acts_as_taggable_onタグクラウドで最も人気のあるタグを表示

しかし、タグクラウドに最も人気のあるタグのみを表示する方が理にかなっています。

私のコントローラがあります。

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個のタグを表示し、どのように何回そのに従って、各タグのサイズでありますused

答えて

7

MyModel.tag_counts_on(:tags)を使用すると、タグ数の降順で並べ替えることができます(最も頻繁に使用されるタグが最初です)。特定の数に制限する場合は、それに.limit(my_magic_number)を追加するだけです。だから、

は、あなたがこのような何かをしたい、あなたの Postモデルに10個の最も人気のあるタグのリストを取得する:あなたは、各タグが使用された回数を確認したい場合は

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

、それぞれ@tagsのオブジェクトは、あなたが見ることができるcount属性を持っています。

EDIT:(下の私のコメントの1から抽出された)...とあなたには、いくつかの外部で定義された制限を特定の順序(最初の最も使用されるタグ)でタグにしたい場合は、この使用することができます:Post.tag_counts_on(:tags).order('count desc').limit(however_many_you_want)

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

あなたのビューは同じまま:

+0

ここに「tag_counts_on」と記載されています:https://github.com/mbleigh/acts-as-taggable-on(ページの「タグクラウドの計算」を検索してください) – Frost

+0

私の質問が更新されました。tag_counts_onの簡単なグラブタグを付けて、それぞれをカウントします。タグカウントでそれらを注文するか、最も人気のあるタグだけを表示しようとしています – rugbert

+4

さて、 'Post.tag_counts_on(:tags).order( 'count desc')。limit(但し、fort_many_you_want)'のようにしてください。 – Frost

1

は、ドキュメントによると、あなたはちょうどあなたがあなたのケースでは、あなたの計算に必要なオプション(コントローラ)を渡す必要があります。よろしく!

関連する問題