扭转了(我的问题是几乎一样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