###前提・実現したいこと
Railsチュートリアルを一通り終え、micropostに「いいね」機能の拡張を実装中です。
しかし、「いいね」の取り消しができません。お力添えいただけると助かります。
###発生している問題・エラーメッセージ
ActionView::Template::Error (undefined method `like_user' for nil:NilClass): 1: <% if micropost.like_user(current_user.id) %> 2: <%= button_to micropost_like_path(id:1, micropost_id: micropost.id), method: :delete, id: "like-button", remote: true do %> 3: <span> 4: <%= micropost.likes_count %>
###該当のソースコード
ruby
1#microposts_controller.rb 2def index 3 @micropost = current_user.microposts.build if logged_in? 4 @microposts = Micropost.all 5 @likes = Like.where(micropost_id: params[:micropost_id]) 6 end
ruby
1#likes_controller.rb 2class LikesController < ApplicationController 3 def create 4 @like = Like.create(user_id: current_user.id, micropost_id: params[:micropost_id]) 5 @likes = Like.where(micropost_id: params[:micropost_id]) 6 end 7 8 def destroy 9 @like = Like.find_by(user_id: current_user.id, micropost_id: params[:micropost_id]) 10 @like.destroy 11 @likes = Like.where(micropost_id: params[:micropost_id]) 12 end 13end
ruby
1#_like.html.erb 2<% if micropost.like_user(current_user.id) %> 3 <%= button_to micropost_like_path(@likes, micropost_id: micropost.id), method: :delete, id: "like-button", remote: true do %> 4 <span> 5 <%= micropost.likes_count %> 6 </span> 7 <% end %> 8<% else %> 9 <%= button_to micropost_likes_path(micropost),id: "like-button", remote: true do %> 10 <span> 11 <%= micropost.likes_count %> 12 </span> 13 <% end %> 14<% end %>
ruby
1#destroy.js.erb 2$("#like-buttons").html("<%= j(render partial: 'like', locals: { micropost: @micropost, likes: @likes }) %>");
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/07 04:24