如何从自定义模块调用方法?

时间:2010-11-12 15:06:50

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

我在/lib文件夹中创建了一个模块:

Module CookieHelper

   $str = cookies["shoppingcart"]

   def get_all_cookie_info()
   end

end

但这不起作用。如果我将代码移动到控制器中,它可以正常工作。

另外,我正在尝试调用此模块中的方法。我试过了:

  require CookieHelper
  CookieHelper::get_all_cookie_info()

2 个答案:

答案 0 :(得分:2)

要使用其他类(例如控制器)内部模块的方法,你可以这样做:

include CookieHelper

在控制器类中执行此操作后,只需使用方法名称即可调用get_all_cookie_info()。

听起来你可能会尝试一些奇怪的东西,所以如果你想说明get_all_cookie_info应该做什么,那么也许我可以提供更多建议。

答案 1 :(得分:0)

CookieHelper::get_all_cookie_info是调用此方法的正确方法。

include CookieHelper
get_all_cookie_info

是另一种有效的方法,如果你想在cookie帮助程序中包含所有方法而不必命名它们(一旦加载文件lib / cookie_helper)。

问题可能是,甚至还不需要lib文件,这是因为rails3不再自动加载lib中的文件。您可以通过修改application.rb文件并在class Application < Rails::Application

中进行设置来告知您这样做
config.autoload_paths += %W( #{config.root}/lib )