2011-06-20 2 views
2

いくつかのジオロケーションロジックを扱うためにlibフォルダの下にクラスを作成しました。このクラスはコントローラメソッドから開始されています。このクラスでは、地理的位置に関するすべての問題を処理する必要があります.IPから国を見つけるために外部APIを照会し、国が見つかった場合はCookieを設定します(外部APIはユーザーのリクエストごとに呼び出されません)。 libディレクトリの下にあるクラスの中で "params"と "cookies"メソッドを使用する - rails 3

class GeoLocation 
end 

は今、このクラスの内部で、私は「のparams」クッキーを設定し、それらにアクセスするには、「クッキー」方式と同様のパラメータにアクセスするためのメソッドにアクセスしたい、と言います。

これらのメソッドを動作させるには、このクラスにどのような要素を含めるべきですか。 私は試しました -

class GeoLocation 
    include ActionController 
    include ActionController::Cookies 
end 

しかし、これは誤りです。

私もこれを試していない -

class GeoLocation < ActionController::Base 

しかし、誰使用します。だから、私はこれをどうやってやるべきか、私のアプローチに代わるより良い方法があるのです。

答えて

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上に読むことをお勧めします。

+0

ありがとうございます!これは私が探していたものならば。 – rtdp

関連する問題