Подтвердить что ты не робот

Где ввести правила формата времени в Rails 3?

Я нахожу себя, повторяя типизацию многих strftime, которые я определил.

Наблюдая за Ryan Bates railscasts ep 32/33 (я думаю), я создал настраиваемую опцию для метода to_s, как в Time.now.to_s, так что я могу делать Time.now.to_s (: sw), где: sw - мой собственный метод, например, для получения "23 сентября 2010 года, 5:00 вечера".

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

Спасибо!

4b9b3361

Ответ 1

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

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

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

Ответ 2

Используйте "время" вместо "даты" в вашем файле локалей, так как временные метки Rails - это время.

в config/locales/en.yml

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

в приложении /views/posts/show.html.haml

  = l post.updated_at
  = l post.created_at, :format => :long

Ответ 3

Использовать API Rails I18n.

# 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

Ответ 4

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

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)

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