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

おそらく、レコードの 1 つが 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 に答える