在 nil 对象上使用 strftime - 如何防止错误?

Posted

技术标签:

【中文标题】在 nil 对象上使用 strftime - 如何防止错误?【英文标题】:Using strftime on nil object - how to prevent error? 【发布时间】:2011-12-04 03:12:39 【问题描述】:

我使用 strftime 将原始时间格式化为输入框的文本。通常,当我使用 strftime 时,我会检查对象是否为 nil,以通过使用 unless nil 来防止错误?但是,我似乎不能在这里使用它:

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

我删除了除非,因为它会引发错误。如果 @event.event_date 为 nil,我如何确保此语句有效?

谢谢

【问题讨论】:

【参考方案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 && @event.event_date.strftime("%m/%d/%Y at %I:%M%p")), :size=>30 %>

【讨论】:

这也是.blank? 的好候选吗?我最近一直在以某些形式工作,它派上用场了。 (因为它会检查空字符串和 nil。) 或者如果你想使用 Rails 日期格式:@event.event_date.try(:to_formatted_s, :long)

以上是关于在 nil 对象上使用 strftime - 如何防止错误?的主要内容,如果未能解决你的问题,请参考以下文章