代码之家  ›  专栏  ›  技术社区  ›  Valentin V

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

  •  3
  • Valentin V  · 技术社区  · 16 年前

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

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

    t=Time.now
    t.my_super_shiny_helper
    

    问题:我应该在哪里实现这个助手?(模块或类,在应用程序目录结构的何处?).创建后,我应该如何称呼它?

    我是Ruby/Rails的新手,很难以正确的方式让它工作。

    谢谢您。

    2 回复  |  直到 16 年前
        1
  •  9
  •   Alex Wayne    16 年前

    我要添加一个文件到 lib/time_extensions.rb

    class Time
      def my_shiny_helper
        ...
      end
    end
    

    在初始值设定项文件中 config/intitializers

    require 'time_extensions'
    

    如果扩展增长了一点,并且是您想要重用的东西,那么可以考虑将其放入插件中以便于包含。甚至是宝石。

        2
  •  4
  •   community wiki Ian Terrell    16 年前

    如果您只想格式化时间,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.rb 或在文件中 config/initializers .