2010-12-15 9 views
0

ロールに基づいて行内にグループ化されたすべてのユーザーを表示する必要があります。だから私は、この持っている私の見解ではなど、すべてのプレミアムユーザーを持つすべての管理ユーザー、1行で1行:値に基づいて行または列に出力する

<% @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

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

このループごとにユーザー名の数をカウントできる方法はありますか?

+0

すでに見つかりました:user.count – John

関連する問題