1

したがって、データベースに日付フィールドを持つオブジェクトがありますが、場合によっては nil になります。これを文字列値として表示できる方法はありますか。TBAのようなものでしょうか?

4

1 に答える 1

6

<%= @event.date || "TBA" %>それをする必要があります。

あなたのコメントに応えて、はい、あなたはモデルでこれを行うことができますが、それは悪い考えです。なんで?

まず第一に、それはデータの提示に関するものなので、その理由でそれはビューに属します。

第二に、それは物事を壊す可能性があります。モデルでそれを行った場合@event.date、日付が返されることもあれば、文字列が返されることもあります。あなたが電話@event.date.hourしてdateいた場合はどうなります"TBA"か?エラーが発生します。唯一の解決策はどこでもそれをチェックすることであり、それは恐ろしいことです。

あなたが本当にそれをたくさんやろうとしているなら、あなたは次のapplication_helper.rbように見えるかもしれないヘルパーメソッドを作成することができます:

def date_or_tba(date)
  date || "TBA"
end

したがって、ビューに次のように書き込むことができます。

<%= date_or_tba @event.date %>

これはタイピングがそれほど少なくはありませんが、文字列「TBA」の使用を1か所だけに制限するという大きな利点があります。つまり、変更が必要になった場合(たとえば、I18nの目的で)は非常に簡単です。

于 2012-04-18T14:14:05.223 に答える