Ruby从日期范围生成表

时间:2013-03-19 02:47:30

标签: ruby-on-rails

我一直遇到很多麻烦:

对于RPI应用程序,我的所有结果都在一个表格中:结果

我正在尝试根据特定数据范围打印表格: 2011-07-31..2012-07-01

在我的控制器中:

class SeasonsController < ApplicationController
  def s2012
  @results = Result.all
  @s2012 = Result.where(:date => (2011-07-31)..(2012-07-01))
  end
end

在我看来:

<table>
  <tr>
    <th>Event ID</th>
    <th>Date</th>
  </tr>
<% @s2012.each do |result| %>
  <tr>
    <td><%= result.event_id %></td>
    <td><%= result.date %></td>
  </tr>
<% end %>
</table>

这不会输出任何错误(小奇迹),但视图中不显示任何内容。 @results = Result.all打印所有整个表格就好了。但是,我如何将其限制在特定的数据范围?

3 个答案:

答案 0 :(得分:0)

也许试试:

 Date.parse('2011-07-31')..Date.parse('2012-07-01')

答案 1 :(得分:0)

在你当前的例子中,rails会认为你在做算术。您正在查看1973年和2004年之间的日期。您希望首先将它们转换为日期对象。做

@s2012 = Result.where(:date => DateTime.parse('2011-07-31')..DateTime.parse('2012-07-01'))

答案 2 :(得分:0)

我知道你正在尝试将所有ActiveRecordy都这样做,但实际上它比你自己编写SQL where子句的可读性差。

Result.where('date BETWEEN ? AND ?',
             Date.parse('2011-07-31'),
             Date.parse('2012-07-01'))