где поставить правила формата времени в Rails 3? - PullRequest
24 голосов
/ 07 сентября 2010

Я повторяю, что набираю много strftime, которое я определил.

Посмотрев Railscasts Райана Бейтса, эпизод 32/33 (я думаю), я создал собственную опцию для метода to_s, как в Time.now.to_s, так что я могу сделать Time.now.to_s (: sw), где: sw - мой пользовательский метод, например, для извлечения «23 сентября 2010 года, 5:00 вечера».

Но проблема в том, что я не знаю, куда поместить определение # sw.Это должно быть в файле в папке инициализатора?Или это должно идти в application.rb?

Спасибо!

Ответы [ 4 ]

45 голосов
/ 14 декабря 2010

Используйте «время» вместо «дата» в вашем файле локалей, так как временные метки Rails являются datetime.

в config / locales / en.yml

en:
  time:
    formats:
      default: "%Y/%m/%d"
      short: "%b %d"
      long: "%B %d, %Y"

в app / views / posts / show.html.haml

  = l post.updated_at
  = l post.created_at, :format => :long
22 голосов
/ 07 сентября 2010

У меня есть файл config/initialisers/time_formats.rb, содержащий:

...
Time::DATE_FORMATS[:posts] = "%B %d, %Y"
Time::DATE_FORMATS[:published] = "%B %Y"
...

Вам просто нужно перезагрузить сервер, чтобы изменения вступили в силу.

5 голосов
/ 18 ноября 2010

Использование Rails I18n API.

# config/locales/en.yml
en:
  date:
    formats:
      default: "%Y-%m-%d"
      short: "%b %d"
      long: "%B %d, %Y"

# in views 
= l post.updated_at # will use default format of date in locales yml file

см. I18n API

0 голосов
/ 30 марта 2014

Пожалуйста, прочитайте этот пост:

Rails - to_formatted_s

Создать файл с именем: config / initializers / time_formats.rb

Time::DATE_FORMATS[:my_custom_time_format] = "%Y-%m-%d %H:%M"

И вы можете использовать:

formated_date = my_date.to_formatted_s(:my_custom_time_format)

Примечание. Необходимо перезапустить сервер rails (WEBRick, FCGI и т. Д.)

...