2010-09-11 116 views
0

我通常都会有一些代码,如下所示:红宝石:未定义的局部变量或方法变通

return if foo.nil? 
bar = foo[:bar] || 0 

与他们之上的是,如果富的问题[:巴]不存在,我得到因为NameError异常得到投掷一个HTTP 500错误,看起来像:

NameError (undefined local variable or method `foo'..) 

什么是一个更优雅的解决办法?

回答

0

有一个插件可以让你更简单,叫做andand。它会告诉你做这样的事情:

bar = foo.andand[:bar] || 0 

这应该是foo && foo[:bar]的简写,故名。

顺便说一句,它也适用于方法。假设foo可以有一个方法quux,您可以使用

foo.andand.quux 
相关问题