如果我不在nil上执行代码,为什么rails会抛出错误

时间:2014-03-01 21:38:56

标签: ruby-on-rails ruby

我需要检查属性是否为零,如果不是,请获取内容

tmp[:field] = maybe_nil != nil ? maybe_nil.content : ''

如果为零,则显示空白字符串。

如果我正在检查nil并故意跳过内容访问者,为什么我会得到undefined method 'content' for nil:NilClass?我怎么能执行这个逻辑?

谢谢!

5 个答案:

答案 0 :(得分:1)

tmp[:field] = maybe_nil ? maybe_nil.content : ''

答案 1 :(得分:0)

如果maybe_nil.content应该总是返回一个字符串,我将按以下方式执行:

tmp[:field] = maybe_nil.try(:content).to_s

nil.to_s #=> ""

答案 2 :(得分:0)

除非有特殊情况,否则这应该有效

tmp[:field] = maybe_nil.nil? ? "" : maybe_nil.content

答案 3 :(得分:0)

tmp [:field] = maybe_nil.present? ? maybe_nil.content:''

答案 4 :(得分:0)

就这样做

 tmp[:field] = maybe_nil.try(:presence).try(:content) || ''