【Rails】【エラー】TypeError - no implicit conversion of nil into String:
エラーを解消したい
記事投稿アプリの中で、記事の中身(文章)を記入せずに空のままプレビュー画面を見ようとしたらエラーがでました。
TypeError - no implicit conversion of nil into String:
英単語の意味
implicit
suggested or understood without being stated directly.
conversion
when you change something from one form to a different one.
要するに、nil
をstring
にchangeできてないってこと。
nil
をstring型
に変換する必要があります。
問題のコードに.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.body
がnil
やfalse
だったら、''
を返す。それ以外だったら、sentence.body
をそのまま使うことを表しています。
article_blocks.each do |article_block| result << if article_block.sentence? sentence = article_block.blockable sentence.body ||= '' #ここ
参考
『プロを目指す人のためのRuby入門』P174