前提・実現したいこと
Ruby(ruby on Rails)でツイッタークローンを作っています。
現在いいね機能を実装中で、いいねボタンを押してBDに保存しようとしたところ以下のエラーメッセージが発生しました。
どうしてもわかりません、どなたご教授願います。
発生している問題・エラーメッセージ
Completed 404 Not Found in 4ms (ActiveRecord: 0.4ms) ActiveRecord::RecordNotFound (Couldn't find Micropost with 'id'=): app/controllers/concerns/favorites_controller.rb:7:in `create'
該当のソースコード
class FavoritesController < ApplicationController before_action :require_user_logged_in def create micropost = Micropost.find(params[:favorite_id]) current_user.favorite(micropost) flash[:success] = '投稿をお気に入りにしました。' redirect_back(fallback_location: root_path) end def destroy micropost = Micropost.find(params[:favorite_id]) current_user.unfavorite(micropost) flash[:success] = '投稿をお気に入りから解除しました。' redirect_back(fallback_location: root_path) end end _favorite_button.html.erb <% if current_user.favorite?(micropost) %> <%= form_with(model: current_user.favorites.find_by(favorite_id: micropost.id), local: true, method: :delete) do |f| %> <%= hidden_field_tag :favorite_id, micropost %> <%#micropost.idを変えてみた%> <%= f.submit 'Unfavorite', class: 'btn btn-danger btn-sm' %> <% end %> <% else %> <%= form_with(model: current_user.favorites.build, local: true) do |f| %> <%= hidden_field_tag :favorite_id, micropost %> <%= f.submit 'Favorite', class: 'btn btn-primary btn-sm' %> <% end %> <% end %> user.rb has_many :favorites has_many :favoritings, through: :favorites, source: :micropost def favorite(other_micropost) unless self == other_micropost self.favorites.find_or_create_by(micropost: other_micropost) end end def unfavorite(other_micropost) favorites = self.favorites.find_by(micropost: other_micropost) favorites.destroy if favorite end
試したこと
puts等によるidが通っているかの確認。おそらくusr.rbのfavoriteメソッドが違うのではないかと思い試行錯誤しましたが、改善には至りませんでんでした。
補足情報(FW/ツールのバージョンなど)
Ruby 2.5.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/12 11:52
2020/03/12 20:05 編集
2020/03/13 14:07
2020/03/13 17:13