轨道格式为零日期



我正在尝试在 Rails 视图中格式化日期。

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

如果日期为 nil,则这不起作用:

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

什么是最好的"轨道"解决方案?

如果对象为 nil,只需添加一个故障保护:

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

如果您想显示某些内容以防万一为零:

<td><%= order.ship_date ? l(order.ship_date, :format => :long) : "Some text" %></td>

三个选项:

1)确保你永远不会有零日期。取决于您尝试创建的产品,但在许多情况下,显示零日期是没有意义的。如果您的产品没有日期是合理的,这将不起作用。

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) %>

最新更新