2016-11-03 20 views
0

此问题与this question有关。Rails组和显示最旧和最新值

数据库表服务器

日期,SERVER_ID,服务器名,server_status

通过我的控制器使用此:

@servers = Server.order(date: :desc).group(:server_id) 

我可以显示最新的服务器状态我的观点与:

<td><%= server.server_status %></td> 

如何在同一张桌子上查看第一个状态?基本上以相反的方式按日期排序。

我知道在这种情况下它并没有真正的意义,但我在第一个问题中使用了这个例子来使它更清晰。

在此先感谢

回答

0

我想这应该做你问

#controller 
servers_acending = Server.order(date: :asc).group_by {|i| i.server_id} 
@first_last_pairs = servers_acending.map {|k, v| [v.first, v.last]} 

#your view 
<%@first_last_pairs.each do |pair|%> 
    <td><%= pair.first.server_name %></td> 
    <td><%= pair.first.server_status %></td> 
    <td><%= pair.last.server_name %></td> 
    <td><%= pair.last.server_status %></td> 
<%end%> 

这是你可以在表格中显示

+0

感谢您的回答。这项工作显示出第一个价值。但是,我认为在分开的栏目中首先显示和最后显示的内容是什么? – Catmal

+0

更新,没有理由使用循环只是放置'td'元素 –

+0

我认为在所有行中显示相同的值。由于存在不同的服务器,这不起作用。或者我错过了什么? – Catmal

0

这第一个也会为你工作:

@servers_latest = Server.all.group(:server_id).order(:date => :desc) 
@servers_oldest = Server.all.group(:server_id).order(:date => :asc) 
+0

如何实现在我的看法?我试过了,但我有问题要运行2个循环。如果你能证明它会有帮助.. – Catmal