rails いいね機能を非同期通信に変更したいのですが、pathがわかりません
解決したいこと
posts/indexページでのいいね(like)機能を実装したのですが、いいねするとページがリダイレクトされてindexページのトップに移動してしまいます。
非同期通信に変更してストレスなくいいねできるようにしたいです。
※deviseは使用していません
https://qiita.com/hapiblog2020/items/3ba7e7edc02f01d987b9
色々な記事を参考にさせていただいているのですが、どれもlink_toのところが
<%= link_to("/likes/#{post.id}/indexcreate", {method: "post"}) do %>
こういったものではなく、
<%= link_to book_favorites_path(book), method: :delete, remote: true do %>
こういったpath(?)で指定しているみたいなのですが、path(?)をどのようにして確認すればいいのかわからず困っています。
教えていただけると幸いです。
現状のコードです
likes_controller.rb
class LikesController < ApplicationController
before_action :authenticate_user
def create
@like = Like.new(user_id: @current_user.id, post_id: params[:post_id])
@like.save
redirect_to("/posts/#{params[:post_id]}")
end
def destroy
@like = Like.find_by(user_id: @current_user.id, post_id: params[:post_id])
@like.destroy
redirect_to("/posts/#{params[:post_id]}")
end
def indexcreate
@like = Like.new(user_id: @current_user.id, post_id: params[:post_id])
@like.save
redirect_to("/posts/index")
end
def indexdestroy
@like = Like.find_by(user_id: @current_user.id, post_id: params[:post_id])
@like.destroy
redirect_to("/posts/index")
end
end
posts/index.html.erb
<% if @current_user && Like.find_by(user_id: @current_user.id, post_id: post.id) %>
<%= link_to("/likes/#{post.id}/indexdestroy", {method: "post"}) do %>
<span class="fa fa-heart liked-btn"></span>
<% end %>
<% else %>
<%= link_to("/likes/#{post.id}/indexcreate", {method: "post"}) do %>
<span class="fa fa-heart unliked-btn"></span>
<% end %>
<% end %>
<%= @post_like_count[post.id] %>
route.rb
get "likes/:post_id/indexcreate" => "likes#indexcreate"
get "likes/:post_id/indexdestroy" => "likes#indexdestroy"
get "likes/:post_id/create" => "likes#create"
get "likes/:post_id/destroy" => "likes#destroy"
最後まで読んでいただきありがとうございます。
教えていただけると幸いです。
0