Rails 2.2中可重用辅助方法的最佳位置

时间:2009-02-17 17:34:57

标签: ruby-on-rails ruby

我计划创建一种方法,以特定方式格式化时间(俄语专门格式化)。

我想在多个模型,控制器和可能的视图中重用这个辅助方法。另外我想在Time类的实例上调用这个helper方法,如下所示:

t=Time.now
t.my_super_shiny_helper

问题:我应该在哪里实施这个助手? (模块或类,在应用程序目录结构中的位置?)。创建之后,我应该怎么称呼它?

我是ruby / rails的新手,很难以正确的方式工作。

谢谢。

2 个答案:

答案 0 :(得分:9)

我会将文件添加到lib/time_extensions.rb

class Time
  def my_shiny_helper
    ...
  end
end

config/intitializers

中的初始化文件中
require 'time_extensions'

如果扩展稍微增加并且您想要重复使用,请考虑将其放入插件中以便于包含。甚至是宝石。

答案 1 :(得分:4)

如果您只想格式化时间,Rails中的干净方法(如敏捷Web开发中所示)是扩展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.rbconfig/initializers的文件中加入第一位。