让导轨接受欧洲日期格式(dd/mm/yyyy)
问题描述:
我希望我的导轨应用接受格式为dd/mm/yyyy的日期字段的日期。让导轨接受欧洲日期格式(dd/mm/yyyy)
在我的模型我试图将日期转换为美国标准,我想Date.parse方法Rails会在调用它期待:
before_validation :check_due_at_format
def check_due_at_format
self.due_at = Date.strptime(self.due_at,"%d/%m/%Y").to_time
end
然而,这将返回:
TypeError in OrdersController#update
can't dup NilClass
如果是需要了解的,该项目形成字段是一个嵌套订单内和订单设置为:
accepts_nested_attributes_for :items, :reject_if => lambda { |a| a[:quantity].blank? && a[:due_at].blank? }, :allow_destroy => :true
所以项目正在验证和保存/更新@ order.save/@ order.update_attributes
谢谢!
答
这可能只是due_at
的值为零的情况。在你的情况下,它是一个空字符串,但由于accepts_nested_attributes_for
上的:reject_if
选项而被忽略,所以它仍然为零。
>> Date.strptime(nil, "%d/%m/%Y")
TypeError: can't dup NilClass
照顾一些有条件的然后。
self.due_at = Date.strptime(self.due_at,"%d/%m/%Y").to_time unless self.due_at.nil?
答
我已经达成正是用Ruby 1.8.7同样的问题,我可以解决这是应该做两步自我分配的唯一途径!
XXX = Date.strptime(self.due_at, “%d /%米/%Y”)。TO_TIME
self.due_at = XXX
我不能认为,这应该是必要的。我能想到的唯一的事情就是ruby在完成使用右边的due_at源字符串之前,在新的目标日期类中逐个分配字段。
这个问题似乎并不存在于Ruby 1.9.3中