【发布时间】:2015-06-20 00:46:01
【问题描述】:
在我的模型类中,我有一个方法:
def full_address
address_lines = [self.address1,self.address2,self.address3].reject!(&:empty?).join(',')
fulladdress = address_lines + ", " + self.city + ', ' + self.state + ', ' + self.zipcode
return fulladdress
end
这只是返回所有地址字段以快速查看它们的简单方法。
当它为空时,这将返回 undefined method 'empty?' for nil:NilClass。如果地址1,地址2,地址3都为空,如何更改方法?
我想我正在寻找这样的功能:
ReturnBlankIfNilElseValue(self.address1)
有类似的东西存在吗?
def full_address
address_lines = [self.address1.to_s,self.address2.to_s,self.address3.to_s].reject!(&:empty?).join(',')
fulladdress = address_lines + ", " + self.city + ', ' + self.state + ', ' + self.zipcode
return fulladdress
end
这个变体返回no implicit conversion of nil into String,这很奇怪,因为在rails 控制台中我可以输入nil.to_s 并得到一个空字符串。
我真的不想检查每个字段是否为 nil,然后添加到数组中,我更喜欢一个函数,如果它是 nil,则只返回空字符串。
抱歉,nil.to_s 确实可以工作,它的第二行也需要一个。它现在的工作将摆脱这一点。
【问题讨论】:
-
我不相信是重复的。如果 nil 不检查它是否为 nil,我想返回空白。
-
您必须检查 nil,才能返回空白。否则你会怎么做?
-
nil.to_s是显式转换。
标签: ruby-on-rails ruby