0

我刚开始学习 Rails,我在尝试格式化时间时遇到了麻烦。我有一个包含许多联系日志的票证模型,我想在视图中格式化 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),以及作者和描述的预期值。

我查看了数据库中联系人对象的所有时间戳值,除了时间之外,没有任何一个 created_at 值。谁能帮我解决这个问题?

4

2 回答 2

2

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

<p><%= contact.created_at.present? ? contact.created_at.strftime("%B %e, %Y") : contact.created_at%></p>
于 2012-08-26T21:17:36.093 回答
0

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

于 2012-08-26T22:38:48.090 回答