indexページのでのいいね機能を非同期通信に変更したいのですが、エラーが出てしまいます。 初心者のため見落としかもしれません。
解決したいこと
railsでTwitterのようなサイトを作っています。
インデックスページのいいね機能を非同期通信に変更しようとしている際にエラーが起きてしまい、その解決をしたいです。
発生している問題・エラー
.error
NoMethodError in PostsController#show
undefined method `user' for nil:NilClass
@user = @post.user
現在のコード
route.rb
省略
get "likes/:post_id/indexcreate" => "likes#indexcreate", as: :create_likes
get "likes/:post_id/indexdestroy" => "likes#indexdestroy", as: :destroy_likes
省略
posts/index.html.erb
<% @posts.each do |post| %>
<div class="posts-index-item">
<div class="post-left">
省略
<td id="posts_likes_<%= post.id %>">
<%= render "posts/likes", post: post %>
省略
posts/create.js.erb/ posts/destroy.js.erb
$('#posts_likes<%= @post.id %>').html("<%= j(render "posts/likes", post: @post) %>");
likes_controller.rb
省略
def indexcreate
@like = Like.new(user_id: @current_user.id, post_id: params[:post_id])
@like.save
end
def indexdestroy
@like = Like.find_by(user_id: @current_user.id, post_id: params[:post_id])
@like.destroy
end
posts/_likes.html.erb
<% if @current_user && Like.find_by(user_id: @current_user.id, post_id: post.id) %>
<%= link_to("destroy_likes_path(user_id: current_user.id, post_id: params[:post_id])", {method: "post", remote: "true"}) do %>
<span class="fa fa-heart liked-btn"></span>
<% end %>
<% else %>
<%= link_to("create_likes_path(user_id: current_user.id, post_id: params[:post_id])", {method: "post", remote: "true"}) do %>
<span class="fa fa-heart unliked-btn"></span>
<% end %>
<% end %>
<%= @post_like_count[post.id] %>
最後まで読んでいただきありがとうございます。
教えて頂けると幸いです。
よろしくお願いいたします。
0