7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Nil location provided. Can't build URI.の解決法

Last updated at Posted at 2020-08-22

前提・実現したいこと

転職活動用ポートフォリオとしてダイエットアプリを開発中。
画像一覧ページに画像を表示させたい。

発生している問題・エラーメッセージ

Nil location provided. Can't build URI.

画像一覧ページでcurrent_userが投稿したpostの画像を表示しようとしたら、
このエラーが出た。

「画像がnil(ない)なので、画像のURLが作れないよ」と言ってる。

スクリーンショット 2020-08-23 午前0.02.27.png
確かに指摘されたとおり、データベースには画像なしの投稿が複数保存されている。

どうやらこれが原因らしい。

該当のソースコード

posts_controller.rb
posts_controller.rb
  def image
    @posts = Post.where(user_id: current_user.id)
  end

  private
  def post_params
    params.require(:post).permit(:food, :calorie, :protein, :fat, :carbo, :text, :image, :weight).merge(user_id: current_user.id)
  end
image.html.haml
image.html.haml
.content
  .images
  - @posts.each do |post|
    = image_tag post.image.url, class: "my-images"

解決法

画像ありのpostだけ取得する。

posts_controller.rb
posts_controller.rb
  def image
    @posts = Post.where(user_id: current_user.id).where.not(image: nil)
  end

これでimageカラムがnilのpostは取ってこないように指定したら解決した。

できあがった画像一覧ページ

スクリーンショット 2020-08-23 午前0.09.37.png

参考記事:[Rails]Where句にNOT NULLを指定する

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?