【发布时间】:2013-09-16 20:50:53
【问题描述】:
我的用户表单中有一个text_field :birthday_line,我需要将其解析为用户的birthday 属性。
所以我在我的User 课堂上做这样的事情。
attr_accessor :birthday_line
before_save :set_birthday
def set_birthday
self.birthday = Date.strptime(birthday_line, I18n.translate("date.formats.default")
end
但问题是,由于某种原因,当我尝试传入字符串27 января 1987 г. 时,它给了我一个错误消息Invalid date,它应该被解析为1987-01-27。
我config/locales/ru.yml中的格式和月份名称
ru:
date:
formats:
default: "%d %B %Y г."
month_names: [~, января, февраля, марта, апреля, мая, июня, июля, августа, сентября, октября, ноября, декабря]
似乎是正确的。
Date.parse 也无济于事,它只是解析日期编号 (27) 并将月份和年份放在今天的日期(因此它将是 2013 年 9 月 27 日而不是 1987 年 1 月 27 日)。
【问题讨论】:
-
I18n.l(user.birthday) 工作正常。所以 i18n 语言环境应该是正确的。
-
不就是和这个问题一样吗? stackoverflow.com/questions/15531786/…
-
depa:不是真的。我认为我的问题最大的部分是解析月份名称,最小的是格式本身。所以给定的解决方案并不真正适合。我见过
delocalizegem,但它仍然不支持 Rails 4。
标签: internationalization ruby-on-rails-4 rails-i18n