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

Смежные вопросы