Использование strftime для нулевого объекта — как предотвратить ошибку?

#ruby-on-rails #strftime

#ruby-on-rails #strftime

Вопрос:

Я использую strftime для форматирования моего необработанного времени в виде текста поля ввода. Обычно, когда я использую strftime, я проверяю, равен ли объект нулю, чтобы предотвратить ошибки, используя, если nil ? Однако, похоже, я не могу использовать это здесь:

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

Я удалил исключение, потому что оно выдавало ошибку. Как я могу убедиться, что это утверждение работает, если @event.event_date равно нулю?

Спасибо

Ответ №1:

Один трюк заключается в использовании try .

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

Или просто проверьте, установлено ли event_date значение:

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

Комментарии:

1. Будет ли это также хорошим кандидатом для .blank? я недавно работал в некоторых формах, и это пригодилось. (Поскольку он проверяет наличие пустой строки и nil.)

2. или, если вы хотите использовать форматы даты rails: @event.event_date.try(:to_formatted_s, :long)