2011-10-03 54 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)