gpt4 book ai didi

ruby-on-rails - 让 Rails 接受欧洲日期格式 (dd/mm/yyyy)

转载 作者:数据小太阳 更新时间:2023-10-29 08:06:27 25 4
gpt4 key购买 nike

我希望我的 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

如果知道有用的话,Items 表单字段是Orders 中的嵌套for,Orders 设置为:

  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 值为 nil 的情况。在您的情况下,它是一个空字符串,但由于 accepts_nested_attributes_for 上的 :reject_if 选项而被忽略,因此它仍然为 nil。

>> 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-on-rails - 让 Rails 接受欧洲日期格式 (dd/mm/yyyy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2204992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com