2010-12-15 4 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

당신은 DB의 모든 사용자를 검색 한 후, 당신이 할 수있는 그룹화는 :

@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

관련 문제