Циклирование нескольких массивов по годам

Я смотрю несколько массивов, но у меня возникают проблемы с выравниванием их в таблице по годам. На данный момент данные не совпадают с соответствующим годом, если данные существуют в каком-либо году, они просто помещают данные в первую строку, а затем помещают данные «0» для остальных, т.е. не совпадает с годом.

Просмотр

<table>
<% @a.zip(@b, @c, @d) do |a, b, c, d| %>
 <tr>
  <td><%= a.year %></td>
  <% if a.blank? %>
    <td>0</td>
    <td>0</td>
  <% else %>
    <td><%= a.id %></td>
    <td><%= a.data %></td>
  <% end %>
  <% if b.blank? %>
    <td>0</td>
    <td>0</td>
  <% else %>
    <td><%= b.id %></td>
    <td><%= b.data %></td>
  <% end %>
  <% if c.blank? %>
    <td>0</td>
    <td>0</td>
  <% else %>
    <td><%= c.id %></td>
    <td><%= c.data %></td>
  <% end %>
  <% if d.blank? %>
    <td>0</td>
    <td>0</td>
  <% else %>
    <td><%= d.id %></td>
    <td><%= d.data %></td>
  <% end %>
 </tr>
</table>

Контроллер

@a = Result.where(id: params[:id_select]).group('year').where('data > 0').select('AVG(data) AS data, year as year, COUNT(id) AS id').order('year ASC')

@b = Result.where(id: params[:id_select]).group('year').where('data > 0').select('AVG(data) AS data, year as year, COUNT(id) AS id').where('id = ?', '0').order('year ASC')

@c = Result.where(id: params[:id_select]).group('year').where('data > 0').select('AVG(data) AS data, year as year, COUNT(id) AS id').where('id = ?', '1').order('year ASC')

@d = Result.where(id: params[:id_select]).group('year').where('data > 0').select('AVG(data) AS data, year as year, COUNT(id) AS id').where('id = ?', '2').order('year ASC')
10
задан DollarChills 7 September 2015 в 00:02
поделиться