如果变量为空则执行默认

时间:2011-04-04 17:31:33

标签: ruby-on-rails-3 variables

目前,我有这个:

self.profile_pic = user_info['image']
self.birthday = user_extra['birthday']
self.city = user_extra['location']['name']

有时user_extra或user_info var为空。我希望有一个默认值。怎么做?

提前致谢,

莫里斯

1 个答案:

答案 0 :(得分:3)

这实际上取决于你想要的具体程度。是空白还是零?因为那里有很大的不同。在Ruby中,空字符串不会被评估为false。假设该变量的特定散列是nil,这将起作用......

self.profile_pic = user_info['image'] || "default"
self.birthday = user_extra['birthday'] || "default"
self.city = user_extra['location']['name'] || "default"

或者您可以使用三元运算符进行更一般的检查以确保变量本身不是nil ...

self.profile_pic = user_info ? user_info['image'] : "default"
self.birthday = user_extra ? user_extra['birthday'] : "default"
self.city = user_extra ? user_extra['location']['name'] : "default"

或者,如果它实际上是空白而不是零,那么更像是......

self.profile_pic = user_info.empty? ? "default" : user_info['image']
self.birthday = user_extra.empty? ? "default" : user_extra['birthday']
self.city = user_extra.empty? ? "default" : user_extra['location']['name']

这取决于您拥有的确切条件,以及您想要去兔洞的距离。 :)希望有所帮助!