我正在尝试在Rails视图中设置日期格式。
<td><%= l order.ship_date, :format => :long %></td>
如果日期为零,则无效:
Object must be a Date, DateTime or Time object. nil given.
什么是最好的“Rails”解决方案?
答案 0 :(得分:11)
如果对象为零,只需添加故障安全:
<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 :(得分:9)
三个选项:
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) %>