12

Railsビューで日付をフォーマットしようとしています。

<td><%= l order.ship_date, :format => :long %></td>

日付がnilの場合、これは機能しません。

Object must be a Date, DateTime or Time object. nil given.

最高の「レール」ソリューションは何ですか?

4

2 に答える 2

11

オブジェクトが 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>
于 2012-11-19T12:19:27.367 に答える
10

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) %>
于 2012-11-19T12:54:27.577 に答える