Вывод в строке или столбце на основе значения - PullRequest
0 голосов
/ 15 декабря 2010

Я хочу, чтобы все мои пользователи были сгруппированы по строкам в зависимости от их роли. Итак, одна строка со всеми пользователями-администраторами, одна строка со всеми пользователями премиум-класса и т. Д. На мой взгляд, у меня есть это:

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

2 голосов
/ 15 декабря 2010

После того, как вы извлекли всех пользователей из базы данных, вы можете сгруппировать их в хэш по их роли и затем просмотреть результаты, например, так:

@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 голосов
/ 16 декабря 2010
 <% users.each do |user| %>
  <span><%= user.name %></span>
<% end %>

Есть ли способ подсчитать количество имен пользователей в каждом цикле?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...