わからないこと
railsでいいねをしてもajaxで非同期で反映されません。
リロードすると反映されますが。
エラーログでは以下のようにでます。
ActionView::Template::Error (undefined method `id' for nil:NilClass): 1: $('#likes_buttons_<%= @post.id %>').html("<%= j(render partial: 'likes/like', locals: {post: @post, like: @like}) %>"); app/views/likes/destroy.js.erb:1
posts/show.html.erb <div class="post-menus-left"> <div id="likes_buttons_<%= @post.id %>"> <%= render partial: 'likes/like', locals: { post: @post, like: @like} %> </div> </div>
likes/_like.html.erb <% if @post.user_id != @current_user.id %> <% if Like.find_by(user_id: @current_user.id, post_id: @post.id)%> <%= link_to("/likes/#{@post.id}/destroy", method: "post", remote: true) do %> <i class="fas fa-bookmark unclip"></i> <% end %> <% else %> <%= link_to("/likes/#{@post.id}/create", method: "post", remote: true ) do %> <i class="fas fa-bookmark"></i> <% end %> <% end %> <% end %>
likes/create.js.erb likes/destroy.js.erb $('#likes_buttons_<%= @post.id %>').html("<%= j(render partial: 'likes/like', locals: {post: @post, like: @like}) %>");
class LikesController < ApplicationController before_action :authenticate_user def create @like = Like.new( user_id: @current_user.id, post_id: params[:post_id] ) @like.save end def destroy @like = Like.find_by( user_id: @current_user.id, post_id: params[:post_id]) @like.destroy end end
エラーにはundefined method 'id' for Nilclass とありますがこれは@postのことだと思いますが何が原因でしょうか?
お力をお貸しください!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。