我想访问cookie,然后执行相同的操作,无论操作或控制器如何。
我不想写出一个从我的无数动作方法中调用的方法,因为除了痛苦之外,它不会产生非常灵活的代码。我宁愿在application_controller.rb中从ApplicationController类(所有控制器类的超类)调用我的cookie处理方法。
但是,在ApplicationController类的主体中调用cookies()
会引发“未定义的方法”错误。 (我想cookies
直到稍后才定义。)
我该怎么办?我应该覆盖ApplicationController的initialize()
方法并从那里调用我的cookie处理方法吗?如果是这样,我应该如何将参数传递给超级构造函数?
P.S。我正在使用Rails 2.3.5
答案 0 :(得分:8)
这是哈希,而不是方法:
cookies[:some_key]
...而不是:
cookies(:some_key)
答案 1 :(得分: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 :(得分:-2)
我正在使用rails 5及以下代码为我工作。
cookies()[:key_name]