Rails 3中strftime的未定义方法错误

时间:2012-08-26 20:38:31

标签: ruby-on-rails ruby ruby-on-rails-3 debugging

我刚刚开始学习Rails,我在尝试格式化时间方面遇到了麻烦。我有一个具有许多联系人日志的Ticket模型,我想在视图中格式化created_at时间戳。当我使用这段代码时:

<% @contacts.each do |contact| %>
  <p><%= contact.created_at.strftime("%B %e, %Y") %></p>
  <p><%= contact.author %></p>
  <p><%= contact.description %><p>
<% end %>

打印出与故障单关联的联系人,该页面显示错误:

undefined method `strftime' for nil:NilClass

然而,当我使用

<% @contacts.each do |contact| %>
  <p><%= contact.created_at %></p>
  <p><%= contact.author %></p>
  <p><%= contact.description %><p>
<% end %>

打印日期(类似2012-08-26 05:16:15 UTC),以及作者和说明的预期值。

我查看了数据库中联系对象的所有时间戳值,并且没有创建除非次数之外的任何值的create_at值。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

也许你的一条记录的created_at设置为nil,试试这个:

<p><%= contact.created_at.present? ? contact.created_at.strftime("%B %e, %Y") : contact.created_at%></p>

答案 1 :(得分:0)

created_at不仅可以返回字符串。 你试过这个: <%= contact.created_at.to_s.strftime("%B %e, %Y") %>