いいねの非同期化をしようとしたところ、
リロードしないといいねが反映されなくなってしまいました…
お手本通りしているはずなのにどうして!?
とコードを見返していると、気がつきました
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に変えると無事非同期化できました!