いいね機能のajaxについて
フリマアプリのいいね機能の実装中のエラーがどうしてもわからないので教えていただきたいです。いいねの取り消しはajaxでできるのですがcreateのview表示のところでのエラーが出ています。そこまではわかっているのですがどこを直したらいいのかわからないので回答のほど、よろしくお願いします。
発生している問題・エラーメッセージ
ActionView::Template::Error (No route matches {:action=>"destroy", :book_id=>#<Book id: 2, title: "bootstrap", body: "bootstrap の教本です", user_id: 1, created_at: "2020-07-07 03:32:35", updated_at: "2020-07-07 03:32:35", price: 1000, paper: false>, :controller=>"likes"}, missing required keys: [:id]): 1: <% if book.liked_by?(current_user) %> 2: <%= link_to book_like_path(book), method: :delete, remote: true, class: "btn" do %> 3: <i class="fas fa-heart heart"></i><span> いいね!</span> 4: <% end %> 5: <%= book.likes.count %> app/views/likes/_like.html.erb:2 app/views/likes/create.js.erb:1
該当のソースコード
app/views/books/show.html.erb
... <div id="like_btn"> <%= render partial: "likes/like", locals: { book: @book } %> </div> ...
app/views/likes/_like.html.erb
<% if book.liked_by?(current_user) %> <%= link_to book_like_path(book), method: :delete, remote: true, class: "btn" do %> <i class="fas fa-heart heart"></i><span> いいね!</span> <% end %> <%= book.likes.count %> <% else %> <%= link_to book_likes_path(book), method: :post, remote: true, class: "btn" do %> <i class="far fa-heart"><span> いいね!</span></i> <% end %> <%= book.likes.count %> <% end %>
app/controllers/likes_controller.rb
class LikesController < ApplicationController def create @book = Book.find(params[:book_id]) @like = current_user.likes.create(book_id: params[:book_id]) end def destroy @book = Book.find(params[:book_id]) @like = Like.find_by(user_id: current_user.id, book_id: params[:book_id]) @like.destroy end end
app/views/likes/create.js.erb
$("#like_btn").html("<%= escape_javascript(render partial: "likes/like", locals: { book: @book })%>");
app/views/likes/destroy.js.erb
$("#like_btn").html("<%= escape_javascript(render partial: "likes/like", locals: { book: @book })%>");
エラーメッセージのmissing required keys: [:id])がなんのことを指しているのかがわからなかったです。destroyの方はちゃんと機能しているのにcreateだけは動いています。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/07 12:59