我的视图会生成一个如下所示的表:
7days ::::: 30days :::: 90days
[1,2,5,6] [2,5,6,7] [4,6,7,6]
相反,我想要一个看起来像的表:
7天:30天:90天左右 1 ::::::::: 2 ::::::::::: 4 5 ::::::::: 5 ::::::::::: 6 1 ::::::::: 6 ::::::::::: 7
我不确定如何将哈希变成列。
控制器
@daysvals = Dcomet.group(:site).sum(:ls7day),
Dcomet.group(:site).sum(:gt7day),
Dcomet.group(:site).sum(:gt30day),
Dcomet.group(:site).sum(:gt90day),
Dcomet.group(:site).sum(:gt180day),
Dcomet.group(:site).sum(:gt365day)
view.html.erb
<table>
<tr>
<td><h4><7days</h4></td>
<td><h4>>7days</h4></td>
<td><h4>>30days</h4></td>
<td><h4>>90days</h4></td>
<td><h4>>180days</h4></td>
<td><h4>>365days</h4></td>
</tr>
<tr>
<% @daysvals.each do |test| %>
<td><%= test.values%></td>
<% end %>
</tr>
</table>
Dcomet模型
class Dcomet < ActiveRecord::Base
attr_accessible :site, :case_id, :created_date, :ls7day, :gt7day, :gt30day, :gt90day, :gt180day, :gt365day, :hours_open
end
答案 0 :(得分:0)
您将@dayvals
设置为哈希列表您的视图必须将另一个列表扩展为表行,将每个内部列表扩展为行项。这将是接近的。在控制器中,转置以获取表行:
cols = [:ls7day, :gt7day, :gt30day, :gt90day, :gt180day, :gt365day]
# Make per-group ordered hashes of sums.
@daysvals = cols.map {|c| Dcomet.group(:site).sum(c)}
# Make a table where each hash's value sequence is a column.
@daystable = @daysvals.map{|hash| hash.values}.transpose
在视图中,每个列表元素发出一行
<% @daystable.each do |row| %>
<tr>
<% row.each do |item| %>
<td><%= item %></td>
<% end %>
</tr>
<% end %>