Railsビューで日付をフォーマットしようとしています。
<td><%= l order.ship_date, :format => :long %></td>
日付がnilの場合、これは機能しません。
Object must be a Date, DateTime or Time object. nil given.
最高の「レール」ソリューションは何ですか?
Railsビューで日付をフォーマットしようとしています。
<td><%= l order.ship_date, :format => :long %></td>
日付がnilの場合、これは機能しません。
Object must be a Date, DateTime or Time object. nil given.
最高の「レール」ソリューションは何ですか?
オブジェクトが nil の場合は、フェイルセーフを追加するだけです:
<td><%= l(order.ship_date, :format => :long) if order.ship_date %></td>
nilの場合に何かを表示したい場合:
<td><%= order.ship_date ? l(order.ship_date, :format => :long) : "Some text" %></td>
3 つのオプション:
1) nil の日付がないことを確認してください。作成しようとしている製品によって異なりますが、多くの場合、nil の日付を表示しても意味がありません。あなたの製品にとって nil の日付が妥当な場合、これはうまくいきません。
2) nil を非表示にするビュー コードをあらゆる場所に記述します。
<%= order.ship_date ? l(order.ship_date, :format => :long) : 'Date unavailable' %>
3) これを行うヘルパー関数を作成します。
def display_date(date, message='Date unavailable')
date ? l(date, :format => :long) : message
end
次に、この日付処理が必要な各場所で行う必要があるのは、次のように言うことだけです。
<%= display_date(order.ship_date) %>