Ruby on rails Rails格式无日期

Ruby on rails Rails格式无日期,ruby-on-rails,datetime,Ruby On Rails,Datetime,我正在尝试在Rails视图中格式化日期 <td><%= l order.ship_date, :format => :long %></td> 最好的“Rails”解决方案是什么?如果对象为零,只需添加故障保护: <td><%= l(order.ship_date, :format => :long) if order.ship_date %></td> :long)如果订单。发货日期%> 如果要以零为单位

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

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

最好的“Rails”解决方案是什么?

如果对象为零,只需添加故障保护:

<td><%= l(order.ship_date, :format => :long) if order.ship_date %></td>
:long)如果订单。发货日期%>
如果要以零为单位显示某些内容,请执行以下操作:

<td><%= order.ship_date ? l(order.ship_date, :format => :long) : "Some text" %></td>
:long):“一些文本”%>
三个选项:

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

2) 在任何地方编写视图代码以隐藏nil:

<%= order.ship_date ? l(order.ship_date, :format => :long) : 'Date unavailable' %>
那么,在每个你想要进行约会治疗的地方,你所要做的就是说:

<%= display_date(order.ship_date) %>


我非常喜欢helper方法,它要短得多,尤其是当你有一个日期很多的应用程序时。在我的例子中,我使用了一个
text\u字段
,故障保护工作正常。谢谢结果是:
(l(订单到期日)如果订单到期日是否存在?%>
def display_date(date, message='Date unavailable')
  date ? l(date, :format => :long) : message
end
<%= display_date(order.ship_date) %>