Разбор даты в Rails ActiveRecord для i18n (в частности, для европейских форматов дат) - PullRequest
2 голосов
/ 29 июля 2010

Я работаю над проектом рельсов для австралийского сайта.В результате они хотят иметь возможность вводить форматы даты в более европейском стандарте «дд / мм / гггг», а не в американском «мм / дд / гггг».У меня есть модель ActiveRecord с полем Дата.Я использую средство выбора даты в jQuery, чтобы предоставить дату, выбранную в текстовом поле, и установить ее в правильном формате.Но когда я пытаюсь сохранить запись, она ошибается.Даже когда я установил пользовательские форматы даты в инициализаторе в соответствии с руководством i18n.

>> b = BlogPost.new
>> b.posted_on = '20/07/2010'
=> "20/07/2010"
>> b.posted_on 
=> nil
>> b.posted_on = '07/20/2010'
=> Tue, 20 Jul 2010

Кажется, что Rails просто использует Date.parse для преобразования строки в объект Date.Есть ли способ исправить это для всего проекта?Я не хочу писать собственный код для каждой модели.

Ответы [ 2 ]

2 голосов
/ 13 января 2012
class Date
  class << self
    def _parse_with_us_format(date, *args)
      if date =~ %r{^(\d+)/(\d+)/(\d+)$}
        _parse_without_us_format("#{$3.length == 2 ? "20#{$3}" : $3}-#{$1}-#{$2}", *args)
      else
        _parse_without_us_format(date, *args)
      end
    end
    alias_method_chain :_parse, :us_format
  end
end
0 голосов
/ 31 июля 2010

Попробуйте изменить формат даты по умолчанию (в config / environment.rb)

ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.
    merge!(default => '%d/%m/%Y %H:%M')

Узнайте больше здесь http://blog.nominet.org.uk/tech/2007/06/14/date-and-time-formating-issues-in-ruby-on-rails/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...