【问题标题】:Rails2 - uninitialized constant My::User::ApplicationHelperRails2 - 未初始化的常量 My::User::ApplicationHelper
【发布时间】:2012-09-03 01:00:00
【问题描述】:

我有一个包含在插件中的类,其中包含以下行

用户.rb

class My::User < My::AbstractModel
  delegate :message_t, :to => ApplicationHelper

  #omited
end

所以我需要在这个模型中调用 application_helper.rb 中定义的 *'message_t'* 函数,

但是,Jenkins 测试失败并给出错误 'uninitialized constant My::User::ApplicationHelper' 所以我想用户模型是在 application_helper.rb 之前加载的。我该如何解决?有没有其他方法可以调用 *'message_t'* 或者我可以更改文件加载顺序吗?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    您无法从模型层访问 rails 助手。 Helpers 旨在协助呈现,并由视图(有时是控制器)层使用。

    另外,delegate 用于将消息传输到直接关联的模型 - 而不是任意类。

    我建议将 message_t 方法从 ApplicationHelper 移出到您的模型可能需要的某个库文件中。然后使用代理对象来调用它,而不是使用delegate。或者你可以为此目的关联一个代理对象,如果你喜欢它的声音,可以使用delegate :)

    【讨论】:

    • 应用程序实际上运行良好。只有詹金斯似乎有问题。我会尝试你的第一个建议,移出 message_t 看看效果如何。
    【解决方案2】:

    你可以在你的模型中require 'application_helper'。它会确保 application_helper 在你的模型之前被加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多