rails お気に入り機能の記事を多数参考にしたのですができません、、、
jqueryが反応しない以前にボタンを押しても何も反応がなく、
countメソッドが動いていないのかなと思っています。。
検証ツールにてエラーはなし
book.rb has_many :users, through: :favorites has_many :favorites def favorited_by?(user) favorites.where(user_id: user.id).exists? end favorite.rb class Favorite < ApplicationRecord belongs_to :user belongs_to :book end user.rb has_many :favorites has_many :favorite_books, through: :favorites, source: :book
お気に入りボタンの view <div id="favorites_buttons_<%= @book.id %>"> </div> <div class="favorite-button"> <% if user_signed_in? %> <% if @book.favorited_by?(current_user) %> <!-- ログインしているユーザーがファボしたかどうかで分岐 --> <button><span>お気に入り解除: </span><%=link_to @book.favorites.count, book_favorites_path(@book.id), method: :delete, remote: true %></button> <% else %> <button><span>お気に入り登録: </span><%=link_to @book.favorites.count, book_favorites_path(@book.id), method: :post , remote: true%></button> <% end %> <% else %> <button><span>お気に入り数: </span><%= @book.favorites.count %></button> <% end %> </div>
favorite.create.js.erb お気に入りをするとここが動くはず、、、 $('#favorites_buttons_<%= @book.id %>').html("<%= j(render partial: 'favorites/favorite', locals: {book: @book}) %>");
book.controller def show @book = Book.find(params[:id]) @message = Message.new @favorite = Favorite.new end
favorite.controller class FavoritesController < ApplicationController def create @book = Book.find(params[:book_id]) @favorite = current_user.favorites.build(book_id: params[:book_id]) @favorite = favorites.find_by(book_id: book.id) @favorite.save redirect_to books_path end def destroy @book = Book.find(params[:book_id]) @favorite = Favorite.find_by(book_id: params[:book_id], user_id: current_user.id) @favorite.destroy redirect_to books_path end end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。