Nil location provided. Can't build URI.

3915 단어 루비RailsRails5

전제·실현하고 싶은 것



전직 활동용 포트폴리오로서 다이어트 앱을 개발중.
이미지 목록 페이지에 이미지를 표시하고 싶습니다.

발생한 문제 및 오류 메시지


Nil location provided. Can't build URI.

이미지 목록 페이지에서 current_user가 게시한 포스트 이미지를 보려고 하면,
이 오류가 발생했습니다.

「이미지가 nil(없음)이므로, 이미지의 URL을 만들 수 없어」라고 말하고 있다.


확실히 지적된 바와 같이, 데이터베이스에는 이미지 없는 게시물이 복수 저장되어 있다.

분명히 이것이 원인인 것 같다.

해당 소스 코드



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는 취하지 않도록 지정하면 해결했다.

완성 된 이미지 목록 페이지





참고 기사 : [Rails]Where 절에 NOT NULL 지정

좋은 웹페이지 즐겨찾기