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

前端之家收集整理的这篇文章主要介绍了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的核心团队成员,并且是一个很活跃的人.绝对值得一看

猜你在找的Ruby相关文章