2010-11-12 5 views
0

J'ai créé un module dans le dossier /lib:Comment appeler une méthode à partir d'un module personnalisé?

Module CookieHelper 

    $str = cookies["shoppingcart"] 

    def get_all_cookie_info() 
    end 

end 

Mais cela ne fonctionne pas. Si je déplace le code dans un contrôleur, cela fonctionne bien.

En outre, j'essaie d'invoquer la méthode dans ce module. J'ai essayé:

require CookieHelper 
    CookieHelper::get_all_cookie_info() 

Répondre

0

CookieHelper::get_all_cookie_info est la méthode correcte pour appeler cette méthode.

include CookieHelper 
get_all_cookie_info 

est une autre façon valide, si vous voulez inclure toutes les méthodes aide des cookies disponibles sans avoir à les espaces de nommage (une fois le fichier lib/cookie_helper a été chargé).

Ce qui est probablement le problème, c'est que le fichier lib n'est même pas encore requis, car rails3 ne charge plus automatiquement les fichiers dans la bibliothèque. Vous pouvez lui dire de le faire en éditant le fichier application.rb et réglage dans class Application < Rails::Application

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

comme jwarchol, a également souligné, le bit dans votre code '$ str = cookies [" shoppingcart "]' regarder un peu bizarre, et plus comme php que ruby. Si vous voulez de l'aide pour le reste de ce que vous essayez d'obtenir, n'hésitez pas à poster une question pour cela. – Jeremy

2

d'utiliser des méthodes à partir d'un module à l'intérieur d'une autre classe (comme un contrôleur), vous faites quelque chose comme ceci:

include CookieHelper 

Une fois que vous le faites à l'intérieur de votre Dans la classe controller, vous pouvez appeler get_all_cookie_info() avec juste le nom de la méthode.

On dirait que vous essayez peut-être quelque chose d'étrange, donc si vous voulez épeler ce que get_all_cookie_info est censé faire, alors peut-être que je peux vous donner plus de conseils.

+0

Cela ne va pas aider la question, qui est équivalent à la méthode que des espaces de noms qu'il a déjà fait. – Jeremy

Questions connexes