如何从自定义模块调用方法?
问题描述:
我创建的文件夹/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)
答
使用方法从一个模块的其它类的内部(如控制器),你做这样的事情:
include CookieHelper
一旦你这样做的里面你控制器的类,你可以用方法名称调用get_all_cookie_info()。
这听起来像你可能会尝试奇怪的东西,所以如果你想明确get_all_cookie_info应该做什么,那么也许我可以提供更多的建议。
+0
这将不利于问题的话,这相当于命名空间因为他已经做的方法。 – Jeremy 2010-11-12 22:35:32
作为jwarchol,也指出,在你的代码'$ str = cookies [“shoppingcart”]'看起来有点奇怪,而且更像php而不是ruby。如果你想要获得一些帮助,你可以随时发布一个问题。 – Jeremy 2010-11-12 22:37:01