应用程序助手方法在另一个助手中调用

时间:2014-05-29 09:23:35

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我陷入了一个奇怪的设计问题,

当我尝试在另一个具有多个类并希望访问应用程序帮助方法的帮助程序中调用应用程序帮助程序方法时,我遇到了问题。

什么是更好的方法?

关于我能做些什么的想法?

我的代码看起来像这样,


## app/helpers/application_helper.rb
module ApplicationHelper
  def my_name
    "stackoverflow"
  end
end

另一个有子类的助手


## app/helpers/my_helper.rb
module MyHelper
  class MyTestclass
    def want_myname
      my_name ## giving undefined method-- how can i call myname method here?
    end
  end
end

undefined method `myname' for MyHelper::MyTestclass

1 个答案:

答案 0 :(得分:1)

以下是您的问题以及如何使用模块的简要说明: 要1.通过简单地说:

创建/打开模块
module MyModule
  def first_module_method
  end
end

To 2. lib文件夹。如果要在lib文件夹中组织模块,可以将它们自己放入模块中。例如,如果您想要一个子文件夹super_modules,您的模块将定义如下:

module SuperModules
  module MyModule
    def first_module_method
    end
  end

end

至3./5。将模块包含在类中时,您只需调用模块方法,就好像它们是在类中定义的那样:

class MyClass
  include MyModule
  def some_method
    first_module_method #calls module method
  end
end

To 4.首先,确保您的应用程序的每个类都真正需要您的模块。如果不是这样,只将它包含在需要的地方是有意义的,这样就不会使那些不需要它的类膨胀。如果你真的想在任何地方使用该模块,请在应用程序中查看类的类层次结构。你想要所有型号的模块吗?你可以打开ActiveRecord :: Base并在那里添加你的模块。