在从表单中的文本字段解析日期时,如何更改ActiveRecord期望的格式?

Ric*_*nes 15 ruby-on-rails-3

问题

  1. 我有一个带有Date属性的Ruby on Rails模型.
  2. 在此模型的表单中,我使用带有JQuery日期选择器的单个文本字段来表示此属性(不是每年,每月和每天的下拉列表,就像Rails自定义一样).
  3. datepicker使用mm/dd/yyyy格式插入日期.
  4. Rails期望dd/mm/yyyy格式的日期.

例子

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

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

笔记:

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

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

dep*_*epa 14

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

从Ruby 1.9开始,日期解析的标准格式就是dd/mm/yyyy为了更好地适应国际用户.更多细节可以在这个SO答案中找到.

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

现在有两个宝石处理这个特定的问题,即Rails中的日期解析不遵循来自的语言环境设置I18n.locale.两者似乎运作良好.

  1. 克莱门斯的delocalize - 似乎已成功应用于一个不错的数字或项目,并且目前拥有最多的星星.

  2. i18n_alchemy来自carlosantoniodasilva - 这个已经被释放了.作者是Rails核心团队成员,并且非常活跃.绝对值得一看.

  • 快速提示:如果打开控制台并输入"I18n.locale",您可以看到应用程序使用的当前设置. (2认同)