rrr013
@rrr013 (gororo ririr)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Rails いいね 非同期通信 いいね押してもいいねされた表示がない

解決したいこと

Ruby on Railsでいいね機能を非同期通信しようとしています。
特にエラーもはかれていないのですが、いいねを押しても非同期で押したことにされず、画面遷移をする事で、押したことになり、いいねの色が付きます。
裏側では、いいねされているらしいのですが、画面遷移しなくても、いいねされたような見た目にしたいです。

よろしくお願いいたします、解決方法を教えて下さい。

発生している問題・エラー

スクリーンショット 2023-07-15 23.23.17.png

一番上の投稿をいいねすると、特に何も変わらす画面遷移をすることで、
スクリーンショット 2023-07-15 23.23.34.png
このようにいいねをされる状況でございます。

該当するソースコード

#favoriteコントローラー


class FavoritesController < ApplicationController
  before_action :authenticate_user!
  
  def create
    @book = Book.find(params[:book_id])
    favorite = current_user.favorites.new(book_id: @book.id)
    favorite.save
  end

  def destroy
    @book = Book.find(params[:book_id])
    favorite = current_user.favorites.find_by(book_id: @book.id)
    favorite.destroy
  end
  

end

#_favorite.html.erb


<% if book.favorited_by?(current_user) %>
    <%= link_to book_favorites_path(book), method: :delete, remote: true, class:'text-danger' do %>
      <i class="fas fa-heart"></i><%= "#{book.favorites.count}" %>
    <% end %>
<% else %>
    <%= link_to book_favorites_path(book), method: :post, remote: true, class:'text-primary' do %>
      <i class="fas fa-heart"></i><%= "#{book.favorites.count}" %>
    <% end %>
 <% end %>
#users/show.html.erb



<% @books.each do |book| %>
   <tr>

     <td>
       <%= link_to user_path(book.user) do %>
         <%= image_tag book.user.get_profile_image(80,80) %>
       <% end %>
     </td>

     <td><%= link_to book.title, book_path(book) %></td>
     <td><%= book.body %></td>
     
     <td>
       <div id="favorite_btn_<%= book.id %>">            
         <%= render 'favorites/favorite', book: book %>
       </div>
     </td>
     <td>
       <%= "コメント数:#{book.book_comments.count}" %>
     </td>
   </tr>
<% end %>
#create.js.erb

$('#favorite_btn_<%= @book.id %>').html("<%= j(render partial: 'favorites/favorite', locals: {book: @book}) %>");
#destroy.js.erb

$('#favorite_btn_<%= @book.id %>').html("<%= j(render partial: 'favorites/favorite', locals: {book: @book}) %>");

自分で試したこと

html.erbのファイルの中の、

<div id="favorite_btn_<%= book.id %>">  
  <% render ~~~~~~ %>
</div>

上記の
<div id=
の部分をを付け足しました。

まだまだ、初学者ですが、よろしくお願いいたします。

0

No Answers yet.

Your answer might help someone💌