2011-10-09 16 views
14

Uso strftime per formattare il mio tempo raw come testo di una casella di input. Di solito, quando uso strftime, controllo se l'oggetto è nullo per prevenire errori usando a meno che non sia nulla? Tuttavia non sembra che posso usare quello qui:Utilizzo di strftime su oggetto nil - come prevenire l'errore?

<%= text_field_tag :event_date, @event.event_date.strftime("%m/%d/%Y at %I:%M%p"), :size=>30 %> 

Ho rimosso il a meno che non stia causando un errore. Come posso assicurarmi che questa dichiarazione funzioni se @ event.event_date è nullo?

Grazie

risposta

35

Un trucco è quello di utilizzare try.

<%= text_field_tag :event_date, @event.event_date.try(:strftime, "%m/%d/%Y at %I:%M%p"), :size=>30 %> 

O semplicemente controllare se event_date è impostato:

<%= text_field_tag :event_date, (@event.event_date && @event.event_date.strftime("%m/%d/%Y at %I:%M%p")), :size=>30 %> 
+0

Il primo ha funzionato brillantemente. Grazie. –

+0

Ottimo! (sentiti libero di accettare questa risposta) – rdvdijk

+0

Questo sarebbe anche un buon candidato per '.blank?' Ho lavorato in alcune forme di recente ed è tornato utile. (Poiché controlla una stringa vuota e nulla.) – Tass