在Rails validates_timeliness错误消息中更改日期格式

时间:2016-02-19 15:21:58

标签: ruby-on-rails internationalization rails-i18n

validates_timeliness gem表示它支持I18n的错误消息。但是,我找不到任何配置(或文档)来告诉我如何修改它生成的错误消息的日期格式。

gem的DEFAULT_ERROR_VALUE_FORMATS文件中有validator.rb。但是,我不想进行全局更改 - 我需要为每个区域设置格式化错误消息。

我尝试将相关的I18n日期格式块添加到我的应用程序的config/locales语言文件中,如下所示:

en:
  date:
    formats:
      default: "%d/%m/%Y"

但是,在服务器重启后,这没有任何效果。

所以我的问题是:如何将特定于语言环境的日期应用于validates_timeliness gem生成的错误消息?

1 个答案:

答案 0 :(得分:1)

我发现validates_timeliness有自己的区域设置块,它在lib/generators/validates_timeliness/templates/en.yml中定义,并且要更改格式,您需要覆盖该块。

将以下块添加到应用程序的config/locales目录中的语言环境文件中:

en:
  validates_timeliness:
    error_value_formats:
      date: '%m/%d/%Y'
      time: '%H:%M:%S'
      datetime: '%m/%d/%Y %H:%M:%S'

格式化的部分可以是任何有效的strftime格式化字符串。

此答案特别适用于Rails 3.2和validates_timeliness 3.0.14环境,但可能通常适用。