sandbox-memo

開発してて出たエラーをメモる場所

undefined method `strftime' for nil:NilClassといわれた

herokuにスケジュールアプリを載せるべく、時刻を表示しようとしたら

f:id:aktkro:20180506122252p:plain

なぞのエラーになってしまった。

heroku logs -t

してみたら

ActionView::Template::Error (undefined method 'strftime' for nil:NilClass):

だそうな。

要素がnilなものに対してstrftimeはつかえないってことらしい。

というわけで該当箇所を以下のように書き換えた。

# 変更前
        <%= post.time.strftime('%H:%M') %>
# 変更後
<%= 
        if post.time.present?
            post.time.strftime('%H:%M')
        else
            nil
          end
        %>

nil?とかempty?でもできるけど正常系の処理を先に書きたいからとりあえずpresent?にしといた。 そもそもカラムをNULL許容にしなければいいんだけど、任意項目だからしゃーなし。

もっとスマートなやり方があるとおもうけどまあ素人なのでこれでいいかな。