2012-08-26 42 views
0

我剛開始學習Rails,我無法嘗試格式化一個時間。我有一個包含許多聯繫人日誌的票證模型,並且我想在視圖中格式化created_at時間戳。當我使用此代碼:未定義的方法錯誤的Rails 3中的strftime

<% @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值。任何人都可以幫我解決這個問題嗎?

+0

表中的'created_at'值是否爲NULL? –

+4

是否所有'@ contacts'保存到數據庫?如果有一個你剛剛初始化並沒有保存,那麼它的'created_at'確實是零。例如,如果您在控制器中初始化一個新的@contact,並在下一行執行'@contacts = Contact.all',則最後一個Contact不會有'created_at',因爲它尚未保存。 – bevanb

+0

謝謝你們,問題在於我在我的問題的代碼上方顯示了一個新聯繫人的表單,該代碼創建但未保存新聯繫人。 –

回答

2

也許您的記錄一個具有created_at設置爲無,試試這個:

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

created_at可以返回不但字符串。 你試過這個: <%= contact.created_at.to_s.strftime("%B %e, %Y") %>

相關問題