更改Rails 3中日期输入的格式?

我在Rails 3中使用text_field进行日期输入,并希望将日期格式化为mm/dd/yyyy

虽然我已经找到了一些以这种方式显示日期的解决方案,但我还没有遇到一种可行的方法来接受该格式作为输入。

问题是,在"09/05/2011"类的模糊日期的情况下,Rails将其解释为“5月9日”而不是“9月5日”。

根据mm/dd/yyyy格式让Rails 3解释这些输入的最佳方法是什么?

希望您的目标受众只是美国人,因为该日期格式并未在美国以外的许多地方使用。

无论如何,您只想validation字符串的格式:

 validates_format_of :the_date, :with => /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/ 

这是一个非常基本的模式,用于validation字符串的格式 ,但不validation分隔符之间的实际值。 如果你想这样做,你最好的选择可能只是尝试使用Date#strptime解析日期并查看它是否解析。

我遇到了一个问题,用户填写了一个月/日/年的文本字段。 但是由于新的Date解析,Rails承认他们输入了日/月/年。 我通过在Rails中修补Date._parse来解决它。 因此我在initializers文件夹中添加了date_patch.rb。

 require 'time' class Date class << self alias :org_parse :_parse # switch the month and day field for expecting US dates def _parse(str, comp=true) str = str.sub(/(\d{1,2})\/(\d{1,2})\/(\d{1,4})/, '\2/\1/\3') org_parse str, comp end end end