2011-10-03 5 views
0

내 사이트 사용자는 팔로워가 링크를 클릭 할 때마다 점수를 얻습니다. 지금은 Ruby on Rails로 상위 5 순위표 만들기

@users = User.all 

<table> 
<tr> 
<th>User</th> 
<th>Points</th> 
</tr> 
<% @users.sort_by{|u| u.clicks.size }.reverse.each do |u| %> 
    <tr> 
    <td><%= u.name %></td> 
    <td><%= u.clicks.size %></td> 
    </tr> 
<% end %> 
</table> 

가 어떻게 블록이 만 상위 5 개 표시 모든 사용자를 통해 갈 수 있습니다, 사용하여 모든 사람의 목록을 표시 할 수 있어요? break if 메소드가 작동하지 않습니다.

답변

4

에 대해 어떻게 :

@users.sort_by{|u| u.clicks.size }.reverse[0...5].each do |u| 

또는 거리와 할 것은 부정에 의해 완전히 역방향 sort_by :

@users.sort_by{|u| -u.clicks.size }[0...5].each do |u| 

또는 데이터베이스를 가질 수가하는 당신을 위해 정렬 :

@users = Users.joins(:clicks).order("clicks.size DESC").limit(5) 
관련 문제