Мой пользователь хочет использовать формат даты% d /% m /% Y (например, 26.02.2011).
Чтобы правильно отображать даты, я изменил на: формат по умолчанию в environment.rb:
environment.rb :
ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.merge!(
:default => "%d/%m/%Y"
)
Работает нормально, но у меня есть одна проблема при попытке сохранить в базе данных строки даты, введенные в этом формате.
Похоже, что Rails принимает строки в формате% m /% d /% Y вместо% d /% m /% Y
02.04.2011 сохраняется как 2011-04-02, а 26.02.2011 просто недействителен и не сохраняется ...
Я искал решения для этого, но те, которые я нашел, полагаются на переформатирование дат в моих моделях, например, приведенное ниже:
mymodel.rb :
def datefield_formatted
datefield.strftime '%m/%d/%Y'
end
def datefield_formatted=(value)
self.datefield = Time.parse(value)
end
view.html.erb :
<%= form.input :datefield_formatted %>
Я мог бы использовать это решение, но оно потребует изменения моих моделей для каждого «поля даты» (в моих приложениях их много).
Поэтому мне было интересно, можно ли было сказать Rails правильно «читать» строку как% d /% m /% Y при конвертации и сохранении в базу данных.