Programming Journal

学習したことの整理用です。

【Rails】【エラー】TypeError - no implicit conversion of nil into String:

エラーを解消したい

記事投稿アプリの中で、記事の中身(文章)を記入せずに空のままプレビュー画面を見ようとしたらエラーがでました。

TypeError - no implicit conversion of nil into String:

f:id:Study-Diary:20201004140239p:plain
エラー画面

英単語の意味
implicit suggested or understood without being stated directly.
conversion when you change something from one form to a different one.

要するに、nilstringにchangeできてないってこと。
nilstring型に変換する必要があります。

問題のコードに.to_sを追加したらOKでした。

(略)
article_blocks.each do |article_block|
      result << if article_block.sentence? #<<で式の戻り値をresultに追加している。
                  sentence = article_block.blockable
                  sentence.body.to_s #追加
(略)

悪くはないけど、以下のコードのほうがよいみたいです。
空文字を代入してることを明示しています。
このコード、現場railsでもチェリー本でも勉強したのに、自分で実装しようと思うとぱっとでてこない…
sentence.body ||= '' は、
sentence.bodynilfalseだったら、''を返す。それ以外だったら、sentence.bodyをそのまま使うことを表しています。

article_blocks.each do |article_block|
      result << if article_block.sentence?
                  sentence = article_block.blockable
                  sentence.body ||= '' #ここ

参考

『プロを目指す人のためのRuby入門』P174