У меня есть text_field :birthday_line
в моей форме пользователя, что мне нужно проанализировать атрибут пользователя birthday
. Так что я делаю что-то подобное в своем классе User
.Rails 4 разобрать дату на другом языке
attr_accessor :birthday_line
before_save :set_birthday
def set_birthday
self.birthday = Date.strptime(birthday_line, I18n.translate("date.formats.default")
end
Но проблема в том, что по какой-то причине он дает мне ошибку говоря Invalid date
, когда я пытаюсь передать строку 27 января 1987 г.
которым должны быть разобранной на 1987-01-27
. имена формата и месяц в мой config/locales/ru.yml
ru:
date:
formats:
default: "%d %B %Y г."
month_names: [~, января, февраля, марта, апреля, мая, июня, июля, августа, сентября, октября, ноября, декабря]
кажутся правильными.
Date.parse
также не помогает, он просто анализирует день (27) и ставит месяц и год на сегодняшнюю дату (так что это будет 27 сентября 2013 года, а не 27 января 1987 года).
I18n.l (пользователь.birthday) работает хорошо хотя. Поэтому локаль i18n должна быть правильной. – Almaron
Разве это не так, как эта проблема? http://stackoverflow.com/questions/15531786/how-do-i-change-the-format-activerecord-expects-when-parsing-dates-from-a-text-f/15607550 – depa
depa: не реально. Я думаю, что большая часть моей проблемы заключается в анализе имен месяцев, а самая маленькая - о самом формате. Таким образом, решения givven действительно не подходят. Я видел «делокализатор», но он все еще не поддерживает Rails 4. – Almaron