投稿にいいね!ができる機能がついていますが、クリックする度にサイドサーバーがから読み込まれる状況ですが、それを非同期でページの更新をなくしたいです。(FBやインスタグラムのように)
Ruby
1<% @posts.each do |post| %> 2 <h4><%= link_to(post.title, "/posts/#{post.id}") %></h4> 3 <% if Like.find_by(user_id: @current_user.id, post_id: post.id) %> 4 <%= link_to("/likes/#{post.id}/destroy", {method: "post"}) do %> 5 <span class="fa fa-heart like-btn-unlike"></span> 6 <% end %> 7 <% else %> 8 <%= link_to("/likes/#{post.id}/create", {method: "post"}) do %> 9 <span class="fa fa-heart like-btn"></span> 10 <% end %> 11 <% end %>
Controller
1class LikesController < ApplicationController 2 3 def create 4 @like = Like.new(user_id: @current_user.id, post_id: params[:post_id]) 5 @like.save 6 redirect_to("/posts/#{params[:post_id]}") 7 end 8 def destroy 9 @like = Like.find_by(user_id: @current_user.id, post_id: params[:post_id]) 10 @like.destroy 11 redirect_to("/posts/#{params[:post_id]}") 12 end 13end
Model
1class Post < ApplicationRecord 2 has_many :likes, dependent: :delete_all 3class Like < ApplicationRecord 4 belongs_to :post 5
おそらく、次のステップは非同期で行うために、link_toのオプションにremote: trueを入れて、リンクを押した時にajaxが発生する流れになるかと思いますが、調べても調べても把握できずにいます。
お力添えを頂ければ幸いです。