如何从ApplicationController(Rails)访问cookie

Jel*_*Cat 14 ruby cookies ruby-on-rails

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

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

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

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

PS我正在使用Rails 2.3.5

mar*_*ada 15

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

cookies[:some_key]
Run Code Online (Sandbox Code Playgroud)

... 代替:

cookies(:some_key)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。但它实际上不是一个返回散列的方法吗?`cookies[:key]` 真的是 `cookies()[:key]` 的简写吗?无论如何,您能帮我找到解决方案吗?调用 `cookies` 并期待一个散列并不能避免我之前遇到的错误。 (2认同)

小智 8

这可能对你有用:

class ApplicationController
  before_filter :handle_cookies
  def handle_cookies
    # Do whatever it is you want to do with your cookies
  end
end
Run Code Online (Sandbox Code Playgroud)

在编译成哈希之后,该before_filter方法将调用您指示的任何子例程(:handle_cookies)cookies.将此代码添加到应用程序控制器将意味着所有其他控制器继承它并将执行相同的功能.