2010-12-15 72 views
0

我想根據其角色顯示按行分組的所有用戶。所以一行的所有管理員用戶,一排與所有付費用戶,等等。在我看來,我有這樣的:基於值的行或列輸出

<% @users.each do |user| %> 
    <tr> 
     <td><%=h user.name %></td> 
     <td><%=h user.role %></td> 
    </tr> 
    <% end %> 

而在控制器我有這樣的:

@users = User.find(:all, :order=>'role asc') 

這將很好地輸出所有用戶,但每個用戶都在一個單獨的行上。有任何想法嗎?謝謝!

回答

2

您檢索從數據庫中的所有用戶後,可以將其整合到通過的結果通過他們的角色散,然後循環,也許是這樣的:

@users = User.all(:order => "role ASC").group_by(&:role) 

這將導致一個哈希:

=> {"admin" => [<User...>, <User...>, ...], "premium" => [<User...>]} 
在你的意見

,所以你可以通過他們循環與each_pair方法:

<% @users.each_pair do |role, users| %> 
    <tr> 
    <td><%= role %><td> 
    <td> 
    <% users.each do |user| %> 
     <span><%= user.name %></span> 
    <% end %> 
    </td> 
    </tr> 
<% end %> 
+0

這項工作很好,謝謝! :-) – John 2010-12-16 08:45:54

0
<% users.each do |user| %> 
    <span><%= user.name %></span> 
<% end %> 

有沒有一種方法可以統計每個循環中用戶名的數量?

+0

已經找到它了:user.count – John 2010-12-16 13:21:28