2011-10-08 19 views
5

Etkin olarak harekete geçirici işler harikadır ve her şey ama etiket bulutunu yalnızca en popüler etiketlerle sınırlamanın bir yolu olup olmadığını merak ediyordum? Doğru, bulutlarımı siparişlerin oluşturulduğu sıraya göre sıralamaya benzemiyor.acts_as_taggable_on etiket bulutu içinde yalnızca en popüler etiketleri gösterme

Ancak etiket bulutu yalnızca en popüler etiketleri göstermesi daha mantıklı.

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

ve benim bakış vardır:

Benim denetleyicisi kaç kez göre

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

Ama bütün bu yapar oluşturulan ilk 40 etiketlerini görüntülemek ve daha sonra her bir etiketi boyutları onun

cevap

7

MyModel.tag_counts_on(:tags) numarasını kullanarak, etiket sayımı azalan (önce en çok kullanılan etiket) sırasına göre sıralanmış bir etiket listesi elde etmek ve belirli bir numarayla sınırlamak istiyorsanız, Sadece .limit(my_magic_number) ekleyebilir. Yani

Böyle bir şey yapacağını senin Post modeline en popüler 10 etiketlerin listesini almak için: Eğer daha sonra her etiket kullanılmıştır kaç kez görmek istiyorsanız

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

, @tags'daki nesnelerin her biri, bakabileceğiniz count özniteliğine sahiptir.

DÜZENLEME: ... (aşağıda benim yorum birinden çıkarılan) ve bazı harici olarak tanımlanmış limitli belirli bir düzen içinde etiketleri (en çok kullanılan etiketler önce) istiyorsanız, bunu kullanabilirsiniz: 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 

görünümünüz aynı kalır:

+0

'tag_counts_on' burada belgelenmiştir: https://github.com/mbleigh/acts-as-taggable-on (sayfada" Etiket bulutu hesaplamaları "aramasını isteyin) – Frost

+0

Soruyu güncelledim, tag_counts_on basit hepsini yakala etiketleri ve her birini sayar. Ben etiket sayımı tarafından sipariş ya da sadece en popüler etiketleri görüntülemek için çalışıyorum – rugbert

+4

Iyi, sonra Post.tag_counts_on (: tags) .order ('count desc'). Limit (Ancak_many_you_want) 'gibi bir şey yapın. – Frost

1

belgelere göre, sadece size durumda, sizin hesaplamalar için ihtiyaç seçenekleri (kontrolör) geçmek zorunda. Saygılarımızla!

İlgili konular