ruby-on-rails - 目录 : defining a class inside a view helper file

标签 ruby-on-rails ruby-on-rails-3 helpers

我有一个 View 帮助程序文件 app/helpers/analysis_helper.rb,我一直在各种 View 文件中使用它的顶层方法。工作正常。然后我在 analysis_helper.rb 中定义了一个 AnalysisSummary 类来打包一些特定于 View 的功能。

但是,当我尝试在 View 文件中实例化 AnalysisSummary 时,出现错误:

uninitialized constant ActionView::CompiledTemplates::AnalysisSummary

也许 Rails 告诉我不应该在辅助文件中定义类?如果是这样,您建议将 AnalysisSummary 停放在哪里?它不是 Controller ,也不是模型...

谢谢。

最佳答案

Railscasts #213 (Revised) (订阅者只能链接,唉),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

对于那些反对帮助者中的类的人,您如何看待 Ryan 的选择?助手用于生成标记,对吗?因此,如果类中的所有逻辑都与呈现(相当复杂的)HTML 有关,我认为它所做的(而不是它的)使其适合包含在助手中。

关于ruby-on-rails - 目录 : defining a class inside a view helper file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5175734/

相关文章:

ruby-on-rails - 在不存在的方法上使用 Rails 表单助手

ruby-on-rails - 在 Dreamhost 共享主机上运行 Rails 4

ruby-on-rails - Ruby 正则表达式 : 1-2 digits required after period if period is present

ruby-on-rails - 如何在 ruby​​ on rails 中获得 elasticsearch 性能优化

jquery - rails 3 : How to get a checkbox to add/remove fields from a form

ruby-on-rails - helpers 真的比 partials 快吗?弦乐 build 呢?

javascript - 在 Rails 6 中安装 JS 第三方库(如 QuillJS)有统一的方法吗?

jquery - 使用 Rails3 进行远程操作的 Flash 消息

javascript - 在 rails 上提交表单之前调用 javascript

app-store - Mac 应用商店助手工具 Sandboxing