0

试图在 .erb 页面中截断 Ruby/Sinatra 中的字符串。我一直在尝试以下变体:

<%= @caption_str.truncate(20) %>
<%= @caption_str[0..20] %>

但是不断收到以下错误消息:

NoMethodError at /392471267473009
undefined method `[]' for nil:NilClass

或者

NoMethodError at /392471267473009
undefined method `truncate' for nil:NilClass

如果我不截断字符串,一切都很好,即

<%= @caption_str %>

我错过了什么?

4

1 回答 1

1
NoMethodError at /392471267473009
undefined method `[]' for nil:NilClass

或者

NoMethodError at /392471267473009
undefined method `truncate' for nil:NilClass

这些错误的描述性足够强。

他们传达no [] or truncate method definednil:NilClass,在这种情况下,它原来是你的 @caption_str对象。

检查是否@caption_str不是nil,然后执行这些操作。什么时候@caption_strnil,你会得到同样的错误。

由于 Ruby 是一种动态编程语言,我们往往会忘记值为零的边缘情况。当出现类似情况时,请始终包括检查。

于 2012-08-28T09:38:14.233 回答