Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

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

No Answers yet.

Your answer might help someone💌