【Rails】ArgumentError - Nil location provided. Can't build URI エラーが出たら
エラーで悩んだのでメモ
画像を投稿するページで、画像を選択しないでプレビュー画面を開こうとすると以下のエラーになりました。
エラー画面
ArgumentError - Nil location provided. Can't build URI
ArgumentError - Nil location provided. Can't build URI.: app/views/shared/_media_image.html.slim:5:in `_app_views_shared__media_image_html_slim___195936332176276977_70365205560160' app/models/article.rb:76:in `block in build_body' app/models/article.rb:70:in `build_body' app/controllers/admin/articles/previews_controller.rb:9:in `show'
View修正
画像がなかった場合を想定していないコードだったので、エラーが出てしまいました。
改善方法は2つありますが、今回は①を選択しました。
① image_tag
があるときだけrender
される
②image_url
にデフォルト値を設定しておく
#① - if medium.image_url #追加 .media-image = image_tag medium.image_url(:lg) #② = image_tag medium.image_url || default_image
※最初、if
を中に入れ込んでしまったけど、これだと、elseのときにmedia-imageに空タグが入ってしまうのでNG
.media-image - if medium.image_url = image_tag medium.image_url(:lg)
参考
ArgumentError Nil location provided. Can't build URI. が出た時の対処法 プロフ画像の実装 | びんぼーろく