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

问题描述:

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

宝石的validator.rb文件中有一个DEFAULT_ERROR_VALUE_FORMATS。但是,我不希望全局更改 - 我需要为每个区域设置格式错误消息。

我试着加入相关的I18n日期格式块到我的应用程序的config/locales语言文件,就像这样:

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

但是,具有服务器重启后没有效果。

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

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

以下块添加到您的应用程序的config/locales目录的区域设置文件(S):

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环境,但一般可能适用。