【发布时间】:2015-02-26 00:15:54
【问题描述】:
我有一个游戏,它会创建日志。在显示日志时,我想将它们依次分组以创建一个整体表格,其中每个回合都有一个嵌套表格。为了实现这一点,我尝试按轮流对日志进行分组,这样我就可以使用每轮运行一次的外循环和该轮内每个日志项的内循环来迭代它们。
现在,我有:
# logs_controller.rb
@logs = @game.logs.order("created_at ASC").group(:turn)
在视图中:
# logs/index.html.erb
<% @logs.each do |turn_logs| %> <table class="table">
<tr>
<td><%= turn_logs.first.turn%></td>
<td>
<table class="table table-striped">
<% turn_logs.each do |log| %>
<tr><td><%= log.text %></td></tr>
<% end %>
</table>
</td>
</tr>
</table>
这不起作用,因为 Postgres 抱怨:
ActiveRecord::StatementInvalid: PG::GroupingError: ERROR: column "logs.id" must appear in the GROUP BY clause or be used in an aggregate function
我确信有一种我忽略的简单方法可以做到这一点,当有人指出时我会拍拍我的头,但现在它正在躲避我。
【问题讨论】:
-
请参阅stackoverflow.com/a/20942527/429758 了解错误解释以及修复方法的建议。
标签: ruby-on-rails postgresql ruby-on-rails-4 activerecord group-by