ruby-on-rails-3 – Rails3 / jQuery UI Datepicker – 保存时的月和日相反

前端之家收集整理的这篇文章主要介绍了ruby-on-rails-3 – Rails3 / jQuery UI Datepicker – 保存时的月和日相反前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
(我的问题和 described in this question几乎一样,只有这个答案在我的情况下不起作用)

我在一个带有Postgres数据库的Rails应用程序中使用了jQuery UI Datepicker.默认实现使用mm / dd / yy日期格式显示所选日期,这正是我想要的.但是,将记录保存到数据库后,月份和日期将相反 – 然后显示为yy-dd-mm.所以选择3/11/2012试图保存为11月3日而不是3月11日,而像2012年3月31日这样的日期根本不存储,因为它不存在.

到目前为止,我已经下了3个不同的途径,试图解决这个问题:

1)首先尝试重新格式化文本字段,使显示器看起来像我想要的:

<%= f.text_field :foo,:value => (@model.foo.blank? ? '' : @model.foo.strftime('%m/%d/%Y')),class: "datepicker" %>

最初正确显示03/31/2012,但保存时仍然相反.

2)所以接下来我尝试改变日期存储的默认方式,认为会解决问题.如this question的答案所述,我将以下内容添加到config / locales / en.yml中:

# config/locales/en.yml
en:
  date:
    formats:
      default: "%m/%d/%Y"

这根本没有任何区别.接下来我发现this question并尝试使用以下行创建config / initializers / 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" ).datepicker({ dateFormat: 'yy-mm-dd' });

从日历中选择3月31日,填写2012-03-31的字段,保存后仍显示为2012-03-31.

但是,我可以如何让日期标记工具使用mm / dd / yy格式?我不能想象这是一件困难的事情,但是我错过了什么?我必须做一些事情如何日期存储在Postgres? (它们被指定为date,而不是datetime.)

解决方法

那么这取决于你如何在数据库中存储数据.
如果您碰巧使用RAW SQL查询,您可以在插入查询中使用to_date(‘2012年3月31日’,’

Postgres’to_date reference

现在,在您的客户端,您可以使用jquery日期选择器

$.datepicker.formatDate('dd-M-yy',Yourdate);

我使用DD星期一YYYY,因为它看起来更清晰.您可以根据需要使用mm / dd / yy格式或其他格式.在这些情况下,在postgre的to_date函数中使用所需的格式

请注意,我没有上面的代码测试.发表评论如果有任何问题或者你面临任何麻烦.

编辑:

在将数据插入数据库之前,您可以在rails视图中使用Date.parse(‘2011-06-18′),并将formatDate设置为datepicker中的’yy-mm-dd’.

原文链接:https://www.f2er.com/ruby/273072.html

猜你在找的Ruby相关文章