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