りゅうじの学習blog

学習したことをアウトプットしていきます。

TypeError - no implicit conversion of nil into Stringのデバッグ

こんにちは、りゅうじです。

今回の記事投稿アプリで、記事の文章を入力しない状態でプレビュー画面に移動したらエラーが発生しているのをデバッグするものです。

ブラウザのエラー画面

ターミナルのログ

エラー分の内容

`no implicit conversion of nil into String`

Google翻訳:nillからStringへの暗黙の変換はありません

 

つまり

nillString に変えれないよ!という意味です。今回はこのエラーを解決していきます。

 

結論

||=''を追記

#models/article.rb
(略)
article_blocks.each do |article_block|
      result << if article_block.sentence?
                  sentence = article_block.blockable
                  sentence.body ||= '' #追記
(略)

ポイントはこちら sentence.body ||= '' #追記

nillガード と呼ばれている記法ですね。

もしも sentence.body があれば sentence.body 、なければ '' という事になります。

文章が空であった時に nill を返してしまう事で発生しているエラーを '' という空である!を返させるようにしてデバッグできたという事です。

(.to_s を用いて文字列にする事でもデバッグできるようですが nillガード の方が好ましいようです)

最後に

読んで頂いた方、ありがとうございました。

これからアウトプットのブログを更新していくのでよろしくお願い致します。