2010-11-26 14 views
9

Je souhaite accéder aux cookies, puis effectuer la même opération, quelle que soit l'action ou le contrôleur. Je ne veux pas écrire une méthode qui est appelée à partir de chacune de mes innombrables méthodes d'action parce que, en plus d'être une douleur, elle ne donne pas un code très agile. Je préfère faire l'appel à ma méthode de gestion des cookies à partir de la classe ApplicationController (la superclasse pour toutes les classes de contrôleur) dans application_controller.rb. Toutefois, l'appel cookies() dans le corps de la classe ApplicationController déclenche une erreur «méthode non définie». (Je suppose que cookies ne sera défini que plus tard.)Comment accéder aux cookies à partir de ApplicationController (Rails)

Que puis-je faire? Dois-je remplacer la méthode initialize() de l'ApplicationController et appeler ma méthode de gestion des cookies à partir de là? Si oui, comment dois-je passer les arguments au super constructeur?

P.S. J'utilise Rails 2.3.5

Répondre

7

Cela pourrait fonctionner pour vous:

class ApplicationController 
    before_filter :handle_cookies 
    def handle_cookies 
    # Do whatever it is you want to do with your cookies 
    end 
end 

La méthode before_filter appelle n'importe quel sous-programme que vous indiquez (:handle_cookies) après cookies a été compilé dans un hachage. L'ajout de ce code à votre contrôleur d'application signifie que tous les autres contrôleurs en héritent et exécutent la même fonction.

2

Il est un hachage, pas une méthode:

cookies[:some_key] 

... au lieu de:

cookies(:some_key) 
+1

Merci. Mais n'est-ce pas une méthode qui renvoie un hachage? 'cookies [: key]' est vraiment un raccourci pour 'cookies() [: key]'? Peu importe, pouvez-vous m'aider à trouver une solution? Appeler 'cookies 'et attendre un hachage n'évite pas l'erreur que je recevais auparavant. – JellicleCat

+0

C'est une méthode qui retourne un objet CookieJar (qui hérite de Hash). Qu'est-ce que vous essayez exactement de faire que vous avez besoin d'accéder à la méthode et non les données de cookie? – markquezada

+1

Je suis après les données de cookie. Le problème est de savoir comment y accéder sans l'appeler à partir de chaque action. (Comment puis-je y accéder à partir de la superclasse, par exemple, sans l'appeler à partir d'une méthode dans un contrôleur?) – JellicleCat