nil的未定义方法`to_date':日期时间字段上的NilClass

时间:2013-12-20 17:18:58

标签: ruby datetime activerecord ruby-on-rails-4

在我看来,我正在打电话

<% @posts.each do |post| %>
  ...
  <%= post.published_on.to_date %>
  ...
<% end %>

“published_on”是我的帖子db:

中的日期时间字段
#schema.rb
t.datetime "published_on"

在我的控制器中,我使用'now'方法设置它:

    def publish
      ...
      @post.published_on=DateTime.now
      ...
      end
    end

当页面加载时,我收到以下错误:

undefined method `to_date' for nil:NilClass

但是,如果我在视图中删除'to_date'方法,页面加载正常,并且publish_on字段填充有,例如,'2013-12-20 17:05:40 UTC'

我的问题是,为什么我会收到此错误? “迄今为止”的方法有效吗?

2 个答案:

答案 0 :(得分:0)

您可能打算使用

<%= @post.published_on.to_date %>

请注意使用实例变量@post而不是局部变量post

答案 1 :(得分:0)

多诺万回答了这个问题。数据已经采用日期格式,我试图做的是格式化,并且采用strftime()的方法是适当的。