###解決したいこと
いいねが非同期でできるように実装したい
前提
現在、ruby on rails でwebアプリを開発中です。
アプリは、投稿機能があり、いいねボタンも作成しました。
redirect_toをつけていいねボタンを作成したらページが遷移していいね処理がされるように実装はできました。
ただ、やはりユーザーの利便性を考えていいねは非同期通信したいと考えております。
発生している問題
いくつかの記事を参考にいいねの非同期をトライしてみたのですが、ページをリロードしないといいねが反映されません。
該当のソースコード
index.html.haml
ruby
1.posts-profile-box__favoritesBox 2 .posts-profile-box__favoritesBox__favorite 3 = render partial: 'favorites/favorite', locals: { post: post} 4 .posts-profile-box__favoritesBox__count 5 = post.favorites.count
_favorite.html.haml
-if current_user.already_favorited?(post) = link_to post_favorites_path(post), method: :delete, remote: true do = icon('fas', 'thumbs-up') -else = link_to post_favorites_path(post), method: :post, remote: true do = icon('far', 'thumbs-up')
create.js.erb,destroy.js.erb
$('.posts-profile-box__favoritesBox__favorite').html("<%= escape_javascript(render 'favorites/favorite', post: @post);
favorite_contriller
class FavoritesController < ApplicationController def create @post = Post.find(params[:post_id]) @favorite = current_user.favorites.create(post_id: params[:post_id]) @favorite.save # redirect_back(fallback_location: posts_path) end def destroy @post = Post.find(params[:post_id]) @favorite = current_user.favorites.find_by(post_id: @post.id) @favorite.destroy # redirect_back(fallback_location: posts_path) end end
試したこと
いいね非同期のやり方
https://qiita.com/fumikao/items/373caa60b77f27f2dbdd
https://qiita.com/hayabusa3703/items/2b916e652a1dc85bb6e3
create.js.erbのクラス部分がコードないで白文字になっているので、うまく読み込めていないのかなと思っています
ご不明点があればお申し付けください。
あなたの回答
tips
プレビュー