即时通讯红宝石和铁轨。红宝石类声明
在RoR3控制器从ActionController::Base
request.env["SERVER_ADDR"]
继承所以请求是在基类的方法(即在ActionController的模块内)?
是什么env
然后和["SERVER_ADDR"]
?
将是巨大的,如果有人能做出一点点的代码示例...这将是非常有益的理解!
谢谢!
即时通讯红宝石和铁轨。红宝石类声明
在RoR3控制器从ActionController::Base
request.env["SERVER_ADDR"]
继承所以请求是在基类的方法(即在ActionController的模块内)?
是什么env
然后和["SERVER_ADDR"]
?
将是巨大的,如果有人能做出一点点的代码示例...这将是非常有益的理解!
谢谢!
request.env["SERVER_ADDR"]
request
是要么
一个。提领本地变量request
或
b。不带参数发送消息:request
隐式接收机self
,
env
不带参数的对象而获得通过解引用request
在步骤2中发送消息:env
或物体返回响应于发送该消息:request
到self
,["SERVER_ADDR"]
与参数"SERVER_ADDR"
响应返回到在步骤2和"SERVER_ADDR"
发送消息:env
对象发送消息:[]
是文字的字符串。你可以更明确地写出这样的:
self.request.env.[]("SERVER_ADDR")
或更明确的是这样的:
self.request().env().[]("SERVER_ADDR")
甚至全员出动:
self.send(:request).send(:env).send(:[], "SERVER_ADDR")
request.env["SERVER_ADDR"]
也可以写为request().env()["SERVER_ADDR"]
。所以env
是一个名叫未经request()
返回的对象上的参数,然后调用[]
通过与参数"SERVER_ADDR"
返回的对象上的方法。
但为什么不()... request()。env()。[“SERVER_ADDR”] – 2010-07-11 16:17:09
因为'foo [ba r]'比'foo。[bar]'更好读写,所以ruby的创建者决定调用'[]'的语法应该是前者。 – sepp2k 2010-07-11 16:21:49
很好的解释! +2! :) 1无敌点 – 2010-07-11 17:05:45