如何在Rails 3.0金属类中访问cookie方法

时间:2010-09-25 23:34:19

标签: ruby-on-rails cookies

我有一个位于app / controllers目录中的Rails 3.0金属类。

class FooMetalController < ActionController::Metal

  include ActionController::Cookies
  include ActionController::Helpers::ClassMethods
  include ActionDispatch::Session::CookieStore

  def hit
    unless cookies[:user_id].nil?
      logger.info("Cookies value is : #{cookies[:user_id]}")
      redirect_to "http://www.yahoo.com"
    else
      cookies[:user_id] = { :value => "198", :expires => 180.days.from_now }
      redirect_to "http://www.google.com"
    end
  end

end

当我使用:http://localhost:3000/foo点击网址时,会调用hit方法。问题是它无法使用cookies方法。我已经包含了与cookie相关的模块,我仍然得到:ActionController :: RoutingError(未定义的方法`helper_method'for 错误信息。

如何让Rails金属类识别cookie方法?

1 个答案:

答案 0 :(得分:2)

查看来源:https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/cookies.rb

包含ActionController::Cookies时隐含地调用helper_method。请尝试在ActionController::Helpers之前加入ActionController::Cookies