ruby-on-rails-3 – 当窗体中的文本字段解析日期时,如何更改ActiveRecord所期望的格式?

问题

>我有一个带有Date属性的Ruby on Rails模型.
>在这个模型的表单中,我使用一个带有JQuery datepicker的单个文本字段来表示这个属性(不是Rails自定义的年份,月份和日期的下拉列表).
> datepicker以mm / dd / yyyy格式插入日期.
> Rails的预期日期为dd / mm / yyyy格式.

例子

>如果用户选择2012年3月12日,datepicker会将2012年12月3日的Rails解释为03/12/2012.
>如果用户选择2012年3月20日,datepicker将03/20/2012(由Rails解释为2012年第20个月的第3天).由于此日期不存在,Rails将其转换为零值(我认为).

如何更改Rails在解析此日期文本字段时使用的日期格式?

笔记:

1)我不想更改datepicker插入文本字段的日期格式,

2)我不是要求在视图中显示我的日期属性.

解决方法

我最初以为这可以通过Rails的国际化功能解决,但事实证明我错了.

自Ruby 1.9以来,日期解析的标准格式为dd / mm / yyyy,以便更好地适应国际用户.更多细节可以在this SO answer找到.

该标准在Rails中保留,因为Date.parse现在用于处理表单输入中的数据.使用before_validation回调将不起作用,因为该字段将被回调方法接收为零.

现在有两个宝石处理这个具体问题,即Rails中的日期解析不遵循I18n.locale的区域设置.两者似乎都很好.

> delocalize,由克莱门斯 – 似乎已经成功应用在一个体面的数量或项目,并有最多的星星数量在这一刻.
> i18n_alchemy by carlosantoniodasilva – 最近发布了这个.作者是Rails的核心团队成员,并且是一个很活跃的人.绝对值得一看

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...