在 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 - 如何防止错误?的主要内容,如果未能解决你的问题,请参考以下文章
如何获得这种类型的时间格式“2014 年 8 月 13 日,下午 4:04”使用strftime?
nib 中的 UIView 在 iPad 上是 nil,在 iPhone 上不是 nil
Swift iOS Firebase - 如果FirebaseAuth.FIRUser对象不是nil,它上面的.email怎么可能返回nil?