2011-06-10 71 views
0

我有下面的代码线时要防止从零返回:如何使用尝试

truncate(blog.comments.first.try(:content), :length => 125) 

这里的问题,其中内容是空的,这将返回nil。我如何防止导轨输出nil

回答

2

假设你想要一个空字符串,而不是

truncate(blog.comments.first.try(:content) || "", :length => 125) 
1

碰巧,NilClass实现#to_s返回"",所以:

truncate(blog.comments.first.try(:content).to_s, :length => 125) 

不过,我很好奇:在什么情况下做你有问题nil?根据我的经验,在某些点erb模板调用显式转换#to_s,所以任何类型(包括零),实现显式转换器将无需额外的努力。

+0

我正在发送哈希to_json – AnApprentice 2011-06-10 04:24:46

+0

啊哈............ – DigitalRoss 2011-06-10 04:34:52