質問内容・実現したいこと
掲示版一覧からお気にりボタン押した時にエラーになりました。
お気に入り登録ができるようにしたいです。
ご教授いただきたいです。
よろしくお願いします。
現状発生している問題・エラーメッセージ
Boardモデルのidが見つからないよというエラー
ActiveRecord::RecordNotFound in BookmarksController#create Couldn't find Board without an ID
ruby
1Request 2Parameters: 3 4{"_method"=>"post", "authenticity_token"=>"GjpbjXUEzOUpnDyRLQbgq4sWrambTE8Va/CxpV2KLTAoOl7hqdtWb+wj49thDvnaFexpXbDBDEA/bKO7Am5Wqg==", "board_id"=>"4"} 5Toggle
該当のソースコード
< bookmark_controller.rb >
ruby
1class BookmarksController < ApplicationController 2 3 def create 4 board = Board.find(params[:id]) 5 current_user.bookmark(board) 6 redirect_back fallback_location: root_path, success: t('.bookmark') 7 end 8 9 def destroy 10 board = current_user.bookmarks.find(params[id]) 11 board.unbookmark(board) 12 redirect_back fallback_location: root_path, success: t('.unbookmark') 13 end 14end
< _board.html.erb >
ruby
1<div class='mr10 float-right'> 2 <% if current_user.own?(board) %> 3 <%= render 'card_menus', board: board %> 4 <% else %> 5 <%= render 'bookmarks/bookmark_button', board: board %> 6 <% end %> 7</div>
< _bookmark_button.html.erb >
ruby
1<% if current_user.bookmark?(board) %> 2 <%= render 'bookmarks/unbookmark', board: board, class: 'float-right' %> 3<% else %> 4 <%= render 'bookmarks/bookmark', board: board %> 5<% end %>
< _bookmark.html.erb >
ruby
1<%= link_to board_bookmarks_path(board_id: board.id), id: "js-bookmark-buttun-for-board-#{board.id}", class: 'float-rigth', method: :post do %> 2 <%= icon 'far', 'star' %> 3<% end %>
< _unbookmark.html.erb >
ruby
1<%= link_to, board_bookmark_path(currnt_user.bookmarks.find_by(board_id: board.id)), id: "js-bookmark-buttun-for-board-#{board.id}", class: 'float-right', method: :delete do %> 2 <%= icon 'fas', 'star' %> 3<% end %>
< routes.rb >
ruby
1Rails.application.routes.draw do 2 root to: 'static_pages#top' 3 resources :users, only: %i[new create] 4 resources :boards, shallow: true do 5 resources :comments, only: %i[create destroy] 6 resources :bookmarks, only: %i[create destroy] 7 collection do 8 get :bookmarks 9 end 10 end 11 12 get 'login', to: 'user_sessions#new' 13 post 'login', to: 'user_sessions#create' 14 delete 'logout', to: 'user_sessions#destroy' 15end
ターミナルログ
ActiveRecord::RecordNotFound (Couldn't find Board without an ID): app/controllers/bookmarks_controller.rb:4:in `create' Started PUT "/__web_console/repl_sessions/32ca51ff77e5220055b5364cb19f554a" for ::1 at 2021-06-25 22:18:34 +0900 Started PUT "/__web_console/repl_sessions/32ca51ff77e5220055b5364cb19f554a" for ::1 at 2021-06-25 22:18:37 +0900 Board Load (0.8ms) SELECT "boards".* FROM "boards" LIMIT ? [["LIMIT", 11]] ↳ vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:98
エラーから考えられる原因
Boardモデルのidが見つからないよというエラーなので、どこかでidが渡せて無いからでしょうか。。
試したこと
ruby
1# ネストさせる 2resources :boards, shallow: true do 3 resources :comments, only: %i[create destroy] 4 resources :bookmarks, only: %i[create destroy] 5 collection do 6 get :bookmarks 7 end 8 end 9 10# ネストさせない 11resources :users, only: %i[new create] 12 resources :boards do 13 resources :comments, only: %i[create update destroy], shallow: true 14 collection do 15 get :bookmarks 16 end 17 end 18 resources :bookmarks, only: %i[create destroy] 19
参考にしたURL
Couldn't find Item with 'id'= を解決する - Qiita
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/26 00:32
2021/06/26 01:06
2021/06/26 07:40
2021/06/26 08:47
2021/06/28 10:49
2021/06/28 11:07
2021/06/28 11:11
2021/06/28 11:15