2010-11-26 3 views
9

Я хочу получить доступ к файлам cookie и выполнить одну и ту же операцию независимо от действия или контроллера.Как получить доступ к файлам cookie с помощью ApplicationController (Rails)

Я не хочу выписывать метод, который вызывается из каждого из моих многочисленных методов действий, потому что, помимо боли, он не делает для очень гибкого кода. Я бы предпочел позвонить на мой метод обработки файлов cookie из класса ApplicationController (суперкласс для всех классов контроллера) в application_controller.rb.

Однако вызов cookies() в теле класса ApplicationController вызывает ошибку «неопределенного метода». (Я думаю, что cookies не уточняется до более позднего времени.)

Что мне делать? Должен ли я перезаписать метод initialize() ApplicationController и вызвать метод обработки файлов cookie? Если да, то как передать аргументы супер-конструктору?

P.S. Я использую Rails 2.3.5

ответ

7

Это может работать для вас:

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

Метод before_filter будет вызывать любую подпрограмму, указанную вами (:handle_cookies) после cookies был скомпилирован в хеш. Добавление этого кода в контроллер приложения означает, что все остальные контроллеры наследуют его и будут выполнять ту же функцию.

2

Это хэш, а не метод:

cookies[:some_key] 

... вместо:

cookies(:some_key) 
+1

Спасибо. Но разве это не метод, который возвращает хэш? `cookies [: key]` действительно сокращенно для `cookies() [: key]`? Независимо от того, можете ли вы помочь мне найти решение? Вызов `cookies` и ожидающий хэш не позволяет избежать ошибки, с которой я сталкивался раньше. – JellicleCat 2010-11-26 00:24:29

Смежные вопросы