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’. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |