前提・実現したいこと
プログラミンが学習を初めて1ヶ月の新人ですが、よろしくお願いします。
簡単な投稿機能のアプリを作成しています。
基本的な投稿機能に加えて、これまでに各投稿に対するコメント機能
イイね機能の実装を実装しています。
いいね機能を実装後、ログインをしていない状態で
投稿詳細画面を押すとエラー画面が表示されます。
発生している問題・エラーメッセージ
エラーメッセージ NoMethodError in Posts#show undefined method `already_liked?' for nil:NilClass = @post.likes.count - if current_user.already_liked?(@post) ← この部分が赤く塗られています。 = button_to "取り消す", post_like_path(@post), method: :delete - else = button_to "イイね", post_likes_path(@post) ### 該当のソースコード routes.rb Rails.application.routes.draw do devise_for :users root to: 'posts#index' resources :posts do resources :likes, only: [:create, :destroy] resources :comments, only: :create collection do get "search" end end resources :users, only: :show end user.rb class User < ApplicationRecord devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable has_many :posts, dependent: :destroy has_many :comments has_many :likes, dependent: :destroy has_many :liked_posts, through: :likes, source: :post def already_liked?(post) self.likes.exists?(post_id: post.id) end end posts/show.html.haml .likes .like いいね件数 = @post.likes.count - if current_user.already_liked?(@post) = button_to "取り消す", post_like_path(@post), method: :delete - else = button_to "イイね", post_likes_path(@post) -if user_signed_in? && current_user.id == @post.user_id .resets = link_to edit_post_path(@post.id), method: :get do 編集 .resets = link_to post_path(@post.id), method: :delete do 削徐 ### 補足情報(FW/ツールのバージョンなど) 初心者で説明不足であるかもしれませんが、アドバイスいただけましたら幸いです。 他に情報が必要でした教えてください。 どうぞよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/17 07:26
2020/07/17 07:34
2020/07/17 07:36 編集
2020/07/17 07:42