TypeError - no implicit conversion of nil into Stringのデバッグ
こんにちは、りゅうじです。
今回の記事投稿アプリで、記事の文章を入力しない状態でプレビュー画面に移動したらエラーが発生しているのをデバッグするものです。
ブラウザのエラー画面
ターミナルのログ
エラー分の内容
`no implicit conversion of nil into String`
Google翻訳:nillからStringへの暗黙の変換はありません
つまり
nill
を String
に変えれないよ!という意味です。今回はこのエラーを解決していきます。
結論
||=''を追記
#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ガード
の方が好ましいようです)
最後に
読んで頂いた方、ありがとうございました。
これからアウトプットのブログを更新していくのでよろしくお願い致します。