我有一个位于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方法?
答案 0 :(得分:2)
查看来源:https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/cookies.rb
包含ActionController::Cookies
时隐含地调用helper_method
。请尝试在ActionController::Helpers
之前加入ActionController::Cookies
。