我在lib文件夹下创建了一个类来处理一些地理位置逻辑。此类是从控制器方法启动的。我希望这个类能够处理有关地理位置的所有问题,其中包括 - 查询外部api以从ip查找国家/地区,如果找到国家/地区则设置Cookie(以便在用户的每个请求时不会调用外部api)。说,
class GeoLocation
end
现在,在这个类中,我想访问“params”方法来访问参数以及“cookies”方法来设置cookie并访问它们。
那么我应该在这个类中包含什么才能使这些方法起作用。 我试过 -
class GeoLocation
include ActionController
include ActionController::Cookies
end
但这会产生错误。
我也尝试了这个 -
class GeoLocation < ActionController::Base
但没用。所以,我该怎么做,或者有更好的替代方法。
答案 0 :(得分:6)
params
和cookies
哈希仅适用于您的控制器和视图。您无法在课程中访问它们。您必须定义方法来操作类中的params / cookies哈希值,并从控制器传递它们。
class Geolocation
def initialize params, cookies
@parameters = params
@cookies = cookies
end
end
在你的控制器中:
def index
geo = Geolocation.new(params, cookies)
geo.parameters #parameter hash
geo.cookies #cookies object
end
您可能希望阅读instance variables in ruby。