Учитывая запрос, который возвращает [1, 1] [2, 3], [5,1], Как вы используете этот результат? - PullRequest
0 голосов
/ 06 февраля 2011

Дано:

class ThreadParticipations
  scope :unread, lambda{ |user| where(:user_id => user.id, :read => false) }
end

ThreadParticipations
  .unread(current_user)
  .includes(:thread => :project)
  .group('projects.id')
  .count('threads.id')

Какие выходы:

 => { 1 => 15, 3 => 10 }

Как использовать этот результат для обновления моего списка.В наборе результатов 1 и 3 указаны значения project_ids, как я могу выполнить итерации по этим результатам, чтобы обновить список, например:

# iterates over @projects
<div>
 <li>Project_id 1, unread count = 15</li>
 <li>Project_id 2, unread count = 0</li>
 <li>Project_id 3, unread count = 10</li>
 <li>Project_id 4, unread count = 0</li>
 <li>Project_id 5, unread count = 0</li>
</div>

Спасибо

Ответы [ 2 ]

1 голос
/ 06 февраля 2011

Во-первых: Ваш HTML-код недействителен. li элементы идут внутрь ul или ol, а не div. Код, который вы ищете:

<ul>
  <% hash.each do |project_id, unread_count| %>
    <li>Project_id <%= project_id %>, unread count = <%= unread_count %></li>
  <% end %>
</ul>
1 голос
/ 06 февраля 2011

Не уверен, что я понимаю, вы просто хотите перебрать хеш для вывода html?

<ul>
    <% { 1 => 15, 3 => 10 }.each_pair do |k,v| %>
        <li>Project_id <%= k %>, unread count = <%= v%></li>
    <% end %>
</ul>

edit: так?

<ul>
    <% [[1,1], [2, 3], [3, 15]].each do |project_id, unread_count| %>
        <li>Project_id <%= project_id %>, unread count = <%= unread_count %></li>
    <% end %>
</ul>
...