扭轉了(我的問題是幾乎一樣described in this question,只是這個問題的答案並不在我的情況下工作。)Rails3中/ jQuery UI的日期選擇器 - 月和日是保存
我使用jQuery UI Datepicker在一個Rails應用程序與Postgres數據庫。默認實現使用日期格式mm/dd/yy來顯示所選日期,這正是我想要的。但是,在將記錄保存到數據庫後,月份和日期會相反 - 然後顯示爲yy-dd-mm。因此,選擇3/11/2012將嘗試保存爲11月3日而不是3月11日,而像3/31/2012這樣的日期根本不會保存,因爲它不存在。
我已經走了下來3個不同的渠道,到目前爲止試圖解決這一問題:
1)首先嚐試是格式化文本字段的顯示看我怎麼想:
<%= f.text_field :foo, :value => (@model.foo.blank? ? '' : @model.foo.strftime('%m/%d/%Y')), class: "datepicker" %>
這顯示03/31/2012最初正確,但保存時仍然顛倒。
2)所以接下來我嘗試改變日期存儲的默認方式,認爲這將解決問題。正如在回答描述this question,我增加了以下內容配置/區域設置/ en.yml:
# config/locales/en.yml
en:
date:
formats:
default: "%m/%d/%Y"
這並沒有任何區別的。接下來,我發現this question,並試圖建立配置/初始化/ date_formats.rb與這些行:
Date::DATE_FORMATS[:default]="%m/%d/%Y"
Time::DATE_FORMATS[:default]="%m/%d/%Y %H:%M"
與上述相同,沒有差別。
3)在玩了很多組合之後,我發現DID的一件作品是在我對datepicker插件的調用中指定了yyyy-mm-dd格式 - 這與我想要的相反,但至少日期可以成功保存。因此,日期選擇器調用如下:
$(".datepicker").datepicker({ dateFormat: 'yy-mm-dd' });
選擇從日曆3月31日填充字段2012-03-31,仍然顯示爲2012-03-31保存後。
但是我怎麼能讓日期選擇器以mm/dd/yy格式工作?我無法想象這是一件困難的事情,但我錯過了什麼?我是否需要對日期在Postgres中的存儲方式做些什麼? (它們被指定爲日期,而不是日期時間。)
要停止通過這種撲我的頭靠在牆上,我剛剛將我的字段切換爲「文本」而不是「日期」。這並不理想,但它確實很簡單地解決了問題。 – ellawren 2012-04-06 14:32:04
某些時候切換是一個很好的解決方案,不管它是否理想。但仍然爲了好奇你可能想知道這個問題,可能會晚一些。 – 2012-04-06 18:20:25
Rails 3.2.3,Postgresql和Ruby 1.9.3。我將datepicker格式設置爲mm-dd-yy並且它工作了一段時間,但我正在經歷一次重構,我可以保存一些日期而沒有麻煩,但是特別不再保存一個日期。所以我要重新格式化爲yy-mm-dd,我會看到會發生什麼。 – thomasvermaak 2012-04-09 18:07:42