问题
>我有一个带有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插入文本字段的日期格式,
解决方法
我最初以为这可以通过Rails的国际化功能来解决,但事实证明我错了.
自Ruby 1.9以来,日期解析的标准格式为dd / mm / yyyy,以便更好地适应国际用户.更多细节可以在this SO answer找到.
该标准在Rails中保留,因为Date.parse现在用于处理表单输入中的数据.使用before_validation回调将不起作用,因为该字段将被回调方法接收为零.
现在有两个宝石处理这个具体问题,即Rails中的日期解析不遵循I18n.locale的区域设置.两者似乎都很好.
> delocalize,由克莱门斯 – 似乎已经成功应用在一个体面的数量或项目,并有最多的星星数量在这一刻.
> i18n_alchemy by carlosantoniodasilva – 最近发布了这个.作者是Rails的核心团队成员,并且是一个很活跃的人.绝对值得一看