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

问题描述:

我创建的文件夹/lib模块:如何从自定义模块调用方法?

Module CookieHelper 

    $str = cookies["shoppingcart"] 

    def get_all_cookie_info() 
    end 

end 

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

此外,我试图调用此模块内的方法。我已经试过:

require CookieHelper 
    CookieHelper::get_all_cookie_info() 

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

include CookieHelper 
get_all_cookie_info 

是另一种有效的方式,如果你想包括所有的饼干助手提供的方法,而不必它们的命名应该(一旦文件的lib/cookie_helper已被加载)。

问题可能是,lib文件甚至不需要,这是因为rails3不会自动加载lib中的文件。你可以告诉它通过编辑application.rb文件,并设置内部class Application < Rails::Application

config.autoload_paths += %W(#{config.root}/lib) 
+0

作为jwarchol,也指出,在你的代码'$ str = cookies [“shoppingcart”]'看起来有点奇怪,而且更像php而不是ruby。如果你想要获得一些帮助,你可以随时发布一个问题。 – Jeremy 2010-11-12 22:37:01

使用方法从一个模块的其它类的内部(如控制器),你做这样的事情:

include CookieHelper 

一旦你这样做的里面你控制器的类,你可以用方法名称调用get_all_cookie_info()。

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

+0

这将不利于问题的话,这相当于命名空间因为他已经做的方法。 – Jeremy 2010-11-12 22:35:32