簡體   English   中英

讓軌道接受歐洲日期格式(年/月/日)

[英]Getting rails to accept European date format (dd/mm/yyyy)

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

如果知道有用,則表單字段是Orders中的嵌套,並且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選項而被忽略,因此它仍為零。

>> 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 /%m /%Y”)。to_time

self.due_at = xxx

我可以'相信這應該是必要的。 我唯一能想到的是,ruby在完成使用右側的due_at源字符串之前,逐個分配新目標日期類中的字段。

Ruby 1.9.3中似乎不存在這個問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM