ruby-on-rails-3 - 解析表单中文本字段的日期时,如何更改 ActiveRecord 期望的格式?

标签 ruby-on-rails-3

问题

  • 我有一个带有 Date 属性的 Ruby on Rails 模型。
  • 在此模型的表单中,我使用带有 JQuery 日期选择器的单个文本字段来表示此属性(而不是像 Rails 自定义那样为年、月和日提供下拉列表)。
  • 日期选择器使用 mm/dd/yyyy 插入日期格式。
  • Rails 期待日期为 dd/mm/yyyy格式。

  • 例子
  • 如果用户选择 2012 年 3 月 12 日,日期选择器将输入 03/12/2012 ,Rails 将其解释为 2012 年 12 月 3 日。
  • 如果用户选择 2012 年 3 月 20 日,日期选择器将输入 03/20/2012 , 这被 Rails 解释为 的第 3 天第20个月 2012 年。由于该日期不存在,Rails 将其转换为 nil值(value)(我认为)。



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

    笔记:

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

    2)我不是问在 View 中显示我的日期属性。

    最佳答案

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

    从 Ruby 1.9 开始,日期解析的标准格式是 dd/mm/yyyy ,以便更好地容纳国际用户。更多详情请见 this SO answer .

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

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

  • delocalize , by clemens - 似乎已成功应用于相当多的项目,并且目前拥有最多的星星。
  • i18n_alchemy作者: carlosantoniodasilva - 这个是最近发布的。作者是 Rails 核心团队成员,在这方面非常活跃。绝对值得一看。
  • 关于ruby-on-rails-3 - 解析表单中文本字段的日期时,如何更改 ActiveRecord 期望的格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15531786/

    相关文章:

    ruby-on-rails-3 - Rails 3 和 Rails 4 之间无作用域的不同行为

    ruby-on-rails - 包括模块在开发中工作,在生产中启动时失败?

    ruby-on-rails - Rails 3 的重构/重命名脚本

    css - 如何在 Rails 元素中使用没有类且没有 Bootstrap 的 FontAwesome?

    javascript - 如何创建更新模型属性的按钮?

    ruby-on-rails-3 - 在子域 Rails 3.1 上安装引擎

    ruby-on-rails - 在 yaml 文件中传递变量

    ruby-on-rails - 在保存到 Rails 之前如何更改回形针模型文件中的图像名称?

    ruby-on-rails - 基于键/值存储在 Formtastic 中创建动态表单

    javascript - 无法通过 $getJSON 上传参数使用 js.coffee