0
0

いいね機能非同期化 リロードしないと反映されない

Last updated at Posted at 2024-05-02

いいねの非同期化をしようとしたところ、
リロードしないといいねが反映されなくなってしまいました…
お手本通りしているはずなのにどうして!?
とコードを見返していると、気がつきました

favorites_controller.rb
class FavoritesController < ApplicationController

  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がインスタンス変数でないのです。
最初いいね機能を実装した時はビューに渡す必要がなかったのですが、
今回、更新部分のjs.erbファイルに更新するためインスタンス変数に変更する必要がありました。

favorites_controller.rb
class FavoritesController < ApplicationController

  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を@favoriteに変えると無事非同期化できました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0