2009-02-17 2 views
3

Я планирую создать метод, который форматирует время определенным образом (специализированное форматирование на русском языке).Лучшее место для многоразового вспомогательного метода в Rails 2.2

Я хотел бы использовать этот вспомогательный метод в нескольких моделях, контроллерах и возможно просмотрах. Кроме того, я хотел бы назвать этот вспомогательный метод в экземпляре класса времени, как следует:

t=Time.now 
t.my_super_shiny_helper 

Вопрос: где я должен реализовать этот помощник? (модуль или класс, где в структуре каталога приложений?). После его создания, как мне его называть?

Я новичок в рубинах и рельсах и стараюсь, чтобы это работало надлежащим образом.

спасибо.

ответ

9

Я хотел бы добавить файл lib/time_extensions.rb

class Time 
    def my_shiny_helper 
    ... 
    end 
end 

И в файле инициализации в config/intitializers

require 'time_extensions' 

Если расширения растут немного и то, что вы хотите использовать думать, чтобы положить его в плагин для легкого включения. Или даже драгоценный камень.

4

Если вы просто хотите форматировать время, чистый подход в Rails (как заданные в Agile Web Development) заключается в расширении форматов, используемых в to_s метода:

ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!( 
    :russian => "%A %d %B %Y" 
) 

Time.now.to_s(:russian) #=> "Tuesday 17 February 2009" 

Include первый бит в любой config/environment.rb или в файле в config/initializers.