前提・実現したいこと
いいね機能を非同期化したのですがリロードをしないと反映されない状態です。
エラーなどはありませんが、リロードをしないといいね機能が反映されない原因をご教授願えますでしょうか。
発生している問題・エラーメッセージ
リロードをしないと反映されない状態なので、どの部分に処理ができない原因を突き止めたいです。
該当のソースコード
_favorite-btn.html.erb
<% if tweet.favorited_by?(current_user) %> <%= link_to tweet.favorites.count, tweet_favorites_path(tweet), method: :delete, remote: true, class: "fas fa-heart heart_red" %> <% else %> <%= link_to tweet.favorites.count, tweet_favorites_path(tweet), method: :post, remote: true, class: "fas fa-heart heart_blue" %> <% end %>
js
$("#tweet_<%= @tweet.id %> .favorite-btn").html("<%= j(render 'favorites/favorite-btn', tweet: @tweet) %>");
js
$("#tweet_<%= @tweet.id %> .favorite-btn").html("<%= j(render 'favorites/favorite-btn', tweet: @tweet)
showhtml
<td class="favorite-btn"> <%= render 'favorites/favorite-btn', tweet: tweet%> | </td>
controller
class FavoritesController < ApplicationController def create @tweet = Tweet.find(params[:tweet_id]) favorite = @tweet.favorites.new(user_id: current_user.id) favorite.save end def destroy @tweet = Tweet.find(params[:tweet_id]) favorite = @tweet.favorites.find_by(user_id: current_user.id) favorite.destroy end end
試したこと
・部分テンプレートでjsを呼び出すためのremote: trueでfavoritesディレクトリ内にあるcreate.js.erb、destroy.js.erbを呼び出し非同期処理を行えるようにしたが、リロードしないと反映されない
・非同期処理するためのjavascriptが呼ばれていないことが原因かもしれないと思いgemfileにjqueryをダウンロードしているか確認
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
まだ回答がついていません
会員登録して回答してみよう