我希望我的 Rails 应用程序接受格式为 dd/mm/yyyy 的日期字段的日期。
在我的模型中,我尝试将日期转换为美国标准,我认为 Rails 将调用它的 Date.parse 方法是期望的:
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
值为零。在您的情况下,它是一个空字符串,但由于以下原因而被忽略:reject_if
选项开启accepts_nested_attributes_for
,所以它仍然为零。
>> 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?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)