Ruby on rails Can';我无法让Ruby读取2015年的正确日期

Ruby on rails Can';我无法让Ruby读取2015年的正确日期,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个应用程序,可以在棒球队比赛时显示。如果今天有一场比赛,它只会说“是”,如果没有,它会说“否”,并在下面显示下一场比赛的天数。我在计算距离下一场比赛的天数时遇到了一些问题,我想是因为下一场比赛要到2015年 我的所有数据都存储在seeds.rb文件中。2014年期间,我的种子文件包含许多游戏对象,看起来如下: Game.create(id: 1, date: "4/27", time: "705PM", opponent: "Mobile", away: false, event: "op

我有一个应用程序,可以在棒球队比赛时显示。如果今天有一场比赛,它只会说“是”,如果没有,它会说“否”,并在下面显示下一场比赛的天数。我在计算距离下一场比赛的天数时遇到了一些问题,我想是因为下一场比赛要到2015年

我的所有数据都存储在
seeds.rb
文件中。2014年期间,我的种子文件包含许多
游戏
对象,看起来如下:

Game.create(id: 1, date: "4/27", time: "705PM", opponent: "Mobile", away: false, event: "opening night!")
但现在,由于今年是2015年,这已经不起作用了。下一场比赛是2015年4月9日。所以种子文件现在说:

Game.create(id: 1, date: "2015-04-09", time: "705PM", opponent: "Mobile", away: false, event: "opening night!")
但是,当我加载页面时,会出现以下错误:

undefined method for nil:NilClass
  <% if next_home_game > 1 %>
然后
@next\u home\u games
来自控制器中的以下方法:

@next_games = Game.where(["date > ?", Time.zone.now]).all
@next_home_games = @next_games.select { |game| game.away == false }
从现在到2015年4月9日,我需要对日期格式进行哪些更改才能读取天数

我又试了一次:

Game.create(id: 1, date: "2015-04-09", time: "705PM", opponent: "Mobile", away: false, event: "opening night!")
但是我得到了上面的错误

我觉得这是Ruby中日期/时间方法的一个问题,因为它显然没有看到任何日期大于今天日期的
游戏:
@next\u Games=Game.where([“Date>?”,Time.zone.now])。所有

以下是我的回购协议的链接:


谢谢

在您的案例中,需要使用
Date
DateTime
类来存储
DateTime
数据类型(
Date
为DB数据类型
DateTime
)。像这样:

Game.create(date: Date.new(2015, 4, 9), time: "705PM", opponent: "Mobile", away: false, event: "opening night!")
不一定是这样,因为它取决于日期的来源:这里我假设你可以得到3个整数,代表年、月和日。单独的整数很容易验证


而且,正如上面的评论所说,您不应该显式地设置
id
,因为它由数据库处理,并且只用于唯一地标识条目。

您应该将日期和时间保存在一列(日期)中,因为数据类型datetime用于保存日期和时间。时间只是显示在视图中的字符串。这与比赛的实际日期无关。它仅用于显示目的。好的,问题可能是没有保存日期,可能是因为日期的格式。尝试
Game.find(1).date
并检查是否正在保存日期。因此,不应传递
id
,它应该是自动递增的谢谢。出于某种原因,我的印象是,如果你使用的是种子文件,你应该包括id。谢谢你的澄清。完美。正是我需要的。我很感激。
Game.create(date: Date.new(2015, 4, 9), time: "705PM", opponent: "Mobile", away: false, event: "opening night!")