rtd*_*tdp 2 ruby-on-rails ruby-on-rails-3
我在lib文件夹下创建了一个类来处理一些地理位置逻辑.此类是从控制器方法启动的.我希望这个类能够处理有关地理位置的所有问题,其中包括 - 查询外部api以从ip查找国家/地区,如果找到国家/地区则设置Cookie(以便在用户的每个请求时不会调用外部api).说,
class GeoLocation
end
Run Code Online (Sandbox Code Playgroud)
现在,在这个类中,我想访问"params"方法来访问参数以及"cookies"方法来设置cookie并访问它们.
那么我应该在这个类中包含什么才能使这些方法起作用.我尝试过 -
class GeoLocation
include ActionController
include ActionController::Cookies
end
Run Code Online (Sandbox Code Playgroud)
但这会给出错误.
我也尝试过这个 -
class GeoLocation < ActionController::Base
Run Code Online (Sandbox Code Playgroud)
但没用.那么,我应该怎么做,或者有更好的替代方法.
在params和cookies哈希值仅适用于你的控制器和视图.您无法在课程中访问它们.您必须定义操作类中的params/cookie哈希的方法,并从控制器传递它们.
class Geolocation
def initialize params, cookies
@parameters = params
@cookies = cookies
end
end
Run Code Online (Sandbox Code Playgroud)
在你的控制器中:
def index
geo = Geolocation.new(params, cookies)
geo.parameters #parameter hash
geo.cookies #cookies object
end
Run Code Online (Sandbox Code Playgroud)
您可能想要阅读ruby中的实例变量.
| 归档时间: |
|
| 查看次数: |
2575 次 |
| 最近记录: |