2011-10-08 5 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 특성을 가지고 있습니다.

편집 : (아래 내 의견 중 하나에서 추출)와 일부 외부에서 정의 된 제한과 특정 순서의 태그 (가장 많이 사용되는 태그 첫번째) 원한다면, 당신이 사용할 수 있습니다 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 (however_many_you_want)'와 같은 일을하십시오. – Frost

1

이 문서에 따르면, 당신은 당신이 당신의 경우에, 당신의 계산에 필요한 옵션 (컨트롤러)를 통과해야합니다. 문안 인사!