在lib目录下的类中使用“params”和“cookies”方法 - rails 3

时间:2011-06-20 12:56:57

标签: ruby-on-rails ruby-on-rails-3

我在lib文件夹下创建了一个类来处理一些地理位置逻辑。此类是从控制器方法启动的。我希望这个类能够处理有关地理位置的所有问题,其中包括 - 查询外部api以从ip查找国家/地区,如果找到国家/地区则设置Cookie(以便在用户的每个请求时不会调用外部api)。说,

class GeoLocation
end

现在,在这个类中,我想访问“params”方法来访问参数以及“cookies”方法来设置cookie并访问它们。

那么我应该在这个类中包含什么才能使这些方法起作用。 我试过 -

class GeoLocation
    include ActionController
    include ActionController::Cookies
end

但这会产生错误。

我也尝试了这个 -

class GeoLocation < ActionController::Base 

但没用。所以,我该怎么做,或者有更好的替代方法。

1 个答案:

答案 0 :(得分:6)

paramscookies哈希仅适用于您的控制器和视图。您无法在课程中访问它们。您必须定义方法来操作类中的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