如何从ApplicationController(Rails)访问cookie

我想访问cookie,然后执行相同的操作,无论操作或控制器如何。

我不想写出一个从我的无数动作方法中调用的方法,因为除了痛苦之外,它不会产生非常灵活的代码。 我宁愿在application_controller.rb中从ApplicationController类(所有控制器类的超类)调用我的cookie处理方法。

但是,在ApplicationController类的主体中调用cookies()会引发“未定义的方法”错误。 (我想cookies直到稍后才定义。)

我能做什么? 我应该覆盖ApplicationController的initialize()方法并从那里调用我的cookie处理方法吗? 如果是这样,我应该如何将参数传递给超级构造函数?

PS我正在使用Rails 2.3.5

这可能对你有用:

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

在将cookies编译成哈希后, before_filter方法将调用您指示的before_filter例程( :handle_cookies )。 将此代码添加到应用程序控制器将意味着所有其他控制器inheritance它并将执行相同的function。

这是一个哈希,而不是一个方法:

 cookies[:some_key] 

… 代替:

 cookies(:some_key) 

我正在使用rails 5及以下代码为我工作。

 cookies()[:key_name]