RoR:在视图助手文件中定义一个类

fea*_*ool 1 ruby-on-rails helpers ruby-on-rails-3

我有一个视图助手文件,app/helpers/analysis_helper.rb,我在各种视图文件中使用的顶级方法.工作良好.然后我在analysis_helper.rb中定义了一个AnalysisSummary类来打包一些特定于视图的功能.

但是,当我尝试在视图文件中实例化AnalysisSummary时,我收到错误:

uninitialized constant ActionView::CompiledTemplates::AnalysisSummary
Run Code Online (Sandbox Code Playgroud)

也许Rails告诉我,我不应该在帮助文件中定义一个类?如果是这样,你会在哪里建议停车分析共享?它不是控制器,它不是模型......

谢谢.

Ste*_*ssi 7

Railscasts#213(修订版)(订阅者仅链接,唉)中,Ryan Bates提供了一个示例,说明如何(以及为什么)将一个类包含在帮助器中.基本要点是这样的:

# app/helpers/calendar_helper.rb
module CalendarHelper
  def calendar(date = Date.today)
    Calendar.new(self, date).render
  end

  class Calendar
    def render
      # Calendar, render thyself
    end
    # ... additional methods called by #render
  end
end
Run Code Online (Sandbox Code Playgroud)

对于那些反对帮助者中的课程的人,你对Ryan的选择有何看法?助手是为了产生标记,对吧?所以,如果所有内部的逻辑,涉及渲染(相当复杂的)HTML,我会认为它(而不是它是什么就是),使得它适合加入一个帮手.