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

エラーは十分に説明的です。

それらは、この場合はあなたのオブジェクトであることが判明した nil:NilClassno [] or truncate method definedのためのものがあることを伝えます。@caption_str

@caption_strそうでないかどうかを確認nilしてから、これらの操作を行います。nil@caption_strなると、同じエラーが発生します。

Ruby は動的プログラミング言語であるため、値が nil になるエッジ ケースを忘れがちです。同様の状況が発生した場合は、必ずチェックを含めてください。

于 2012-08-28T09:38:14.233 に答える