2011-10-08 11 views
5

अधिनियम-जैसा-टैग करने योग्य महान काम करता है और सबकुछ लेकिन मैं सोच रहा था कि टैग क्लाउड को केवल सबसे लोकप्रिय टैग तक सीमित करने का कोई तरीका है या नहीं? ऐसा लगता है कि टैग के निर्माण के क्रम में मेरे क्लाउड को ऑर्डर करने की तरह ऐसा नहीं लगता है।act_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 टैग प्रदर्शित है, और फिर प्रत्येक टैग आकार कितनी बार के अनुसार अपनी

उत्तर

7

टैग टैग गिनती अवरुद्ध (सबसे पहले इस्तेमाल किया जाने वाला टैग) द्वारा क्रमबद्ध टैग की एक सूची प्राप्त करने के लिए आप MyModel.tag_counts_on(:tags) का उपयोग कर सकते हैं और यदि आप इसे किसी विशिष्ट संख्या तक सीमित करना चाहते हैं, तो आप बस .limit(my_magic_number) इसमें संलग्न कर सकते हैं।

तो अपने Post मॉडल पर 10 सर्वाधिक लोकप्रिय टैग की एक सूची प्राप्त करने के लिए आप इस तरह कुछ करना चाहते हैं:

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

आप तो देखने के लिए कितनी बार प्रत्येक टैग इस्तेमाल किया गया है चाहते हैं, @tags में ऑब्जेक्ट्स में count विशेषता है जिसे आप देख सकते हैं।

संपादित करें: (नीचे मेरी टिप्पणी से एक से निकाले) ... और यदि आप एक विशेष क्रम में टैग (सबसे अधिक इस्तेमाल किया टैग पहले) कुछ बाहर से परिभाषित सीमा के साथ करना चाहते हैं, तो आप इस का उपयोग कर सकते हैं: 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 सरल grabs सभी टैग और प्रत्येक की गणना करता है। मैं उन्हें टैग गिनती से ऑर्डर करने की कोशिश कर रहा हूं या केवल सबसे लोकप्रिय टैग – rugbert

+4

प्रदर्शित कर रहा हूं, फिर, 'Post.tag_counts_on (: टैग) .order (' count desc ') जैसे कुछ करें। सीमा (हालांकि_many_you_want) '। – Frost

1

प्रलेखन के अनुसार, तुम सिर्फ विकल्प आप अपनी गणना के लिए की जरूरत है, आपके मामले में (नियंत्रक) पारित करने के लिए की है। सादर!

संबंधित मुद्दे