我正在寻找多个阵列,但在对齐基于年的表中时遇到问题。目前数据与相应的年份不一致,如果数据存在于任何一年,它只是将数据放在第一行,然后为其余数据放置'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')
请注明数据格式,你希望你的表和输出格式。 – seahawk
我有一些麻烦,得到什么问题想要的,你可以写下你明确的数据**不是查询**和你想要的文本格式。 –
@DollarChills,我已经为您的问题提出了一个解决方案。我希望我做对了。让我知道它是否适合您的需求。 – dimakura