2013-03-19 110 views
1

我一直有很多麻烦与此生成表:红宝石从日期范围

对于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打印所有整个表就好了。但是,我怎么能限制它到一个特定的数据范围?

回答

0

我知道你正在试图做的这一切ActiveRecordy,但国际海事组织它实际上是比你刚刚编写的SQL where子句自己的可读性。

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

这工作,谢谢!我现在感觉好多了。 我最初尝试用SQL来解决这个问题,但是我无法获得格式化权限,并且在花费时间花费时间将其开发为活动记录。 – Zigmister 2013-03-19 03:16:32

0

也许尝试:

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

在当前的例子轨就会认为你正在做算术。您正在查看1973年到2004年之间的日期。相反,您想先将它们转换为日期对象。做

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