First command

rails g resource Like user:references post:references

rails db:migrate

class LikesController < ApplicationController
  before_action :set_post

  def create
    @post.likes.create(user: current_user)
    render turbo_stream: turbo_stream.replace("like-section-#{@post.id}", partial: "posts/like_section", locals: { post: @post })
  end

  def destroy
    @post.likes.find_by(user: current_user)&.destroy
    render turbo_stream: turbo_stream.replace("like-section-#{@post.id}", partial: "posts/like_section", locals: { post: @post })
  end

  private

  def set_post
    @post = Post.find(params[:post_id])
  end
end

In routes

  resources :posts do
    resources :likes, only: [:create, :destroy]
    resources :comments
  end

In show post

<link href="<https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css>" rel="stylesheet">
<turbo-frame id="like-section-<%= @post.id %>">
<%= render partial: "like_section", post: @post %>
</turbo-frame>

In _like_section.html.erb

<turbo-frame id="like-section-<%= @post.id %>">
<% if @post.likes.exists?(user: current_user) %>
  <%= button_to post_like_path(@post, @post.likes.find_by(user: current_user)), method: :delete, remote: true, class: "like-button" do %>
    <i class="fas fa-heart" style="color: red;"></i>
  <% end %>
<% else %>
  <%= button_to post_likes_path(@post), method: :post, remote: true, class: "like-button" do %>
    <i class="far fa-heart" style="color: gray;"></i>
  <% end %>
<% end %>
<div>
  Likes: <%= @post.likes.count %>
</div>
</turbo-frame>