有没有相当于PHP的isset()的Rails?

基本上只是一个检查,以确保url参数设置。 我该怎么做在PHP中:

if(isset($_POST['foo']) && isset($_POST['bar'])){} 

RoR中的这个粗糙/最好等价于isset()吗?

 if(!params['foo'].nil? && !params['bar'].nil?) end 

更接近的匹配可能是#present?

 # returns true if not nil and not blank params['foo'].present? 

还有其他一些方法

 # returns true if nil params['foo'].nil? # returns true if nil or empty params['foo'].blank? 

你也可以使用defined?

请参阅http://www.tutorialspoint.com/ruby/ruby_operators.htm中的示例;

 foo = 42 defined? foo # => "local-variable" defined? $_ # => "global-variable" defined? bar # => nil (undefined) 

在链接的页面上有更多的例子。

是。 .nil? 在这种情况下 ,检查一个Hash中的密钥是否存在isset()的等价物。

你应该使用Hashkey? 方法,如果给定的密钥存在于接收器中,则返回true

 if(params.key?('foo') && params.key?('bar')) end 

我认为最重要的是,当你从PHP迁移到ROR时,理解的事实是在Ruby中一切都是真的,除了假和无

所以,你的代码:

if(!params['foo'].nil? && !params['bar'].nil?){}

相当于:

if(params['foo'] && params['bar']) end

这完全等同于您的PHP代码。