Лучшее место для многоразового вспомогательного метода в Rails 2.2 - PullRequest
3 голосов
/ 17 февраля 2009

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

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

t=Time.now
t.my_super_shiny_helper

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

Я новичок в ruby ​​/ rails и изо всех сил пытаюсь заставить это работать должным образом.

Спасибо.

Ответы [ 2 ]

9 голосов
/ 17 февраля 2009

Я бы добавил файл к lib/time_extensions.rb

class Time
  def my_shiny_helper
    ...
  end
end

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

require 'time_extensions'

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

4 голосов
/ 18 февраля 2009

Если вы просто хотите отформатировать время, чистый подход в 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"

Включить первый бит в config/environment.rb или в файл в config/initializers.

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