前提・実現したいこと
合コンアプリを作っていまして、その中で合コン情報の投稿に対するお気に入り機能を実装しています。
お気に入りはできるのですが、お気に入り解除ができません。
ルーティングエラーになってしまいます。
原因がわからず、困っています。。( ; ; )
発生している問題・エラーメッセージ
Routing Error No route matches [DELETE] "/user_infos/13/favorites" Rails.root: /Users/yuta/projects/sugu Application Trace | Framework Trace | Full Trace Routes Routes match in priority from top to bottom
該当のソースコード
↓ルーティングです。
ruby
1Rails.application.routes.draw do 2 ・ 3 ・ 4 ・ 5 resources :rooms 6 resources :user_infos do 7 collection do 8 get 'pre_page' 9 get 'false' 10 end 11 resources :favorites, only: [:index, :create, :destroy] 12 end 13end
↓お気に入りボタンのビューです。
ruby
1 ・ 2 ・ 3 ・ 4<ul class="groups"> 5 <% @user_infos.each do |user_info| %> 6 <li class="list"> 7 <div class='user_infos'> 8 <div class="user_img"> 9 <!-- ネットのフォローボタン --> 10 <%= image_tag user_info.image.variant(resize:'400x400'), class: "user_img" if user_info.image.attached? %> 11 <% if user_signed_in? && user_info.user_id != current_user.id %> 12 <% if user_info.favorited_by?(current_user) %> 13 <p class="followed_btn"><%=link_to "お気に入り済", user_info_favorites_path(user_info.id), class: "white", method: :delete %></p> 14 <% else %> 15 <p class="follow_btn"><%=link_to "お気に入り", user_info_favorites_path(user_info.id), class: "white", method: :post %></p> 16 <% end %> 17 <% end %> 18 <!-- ネットのフォローボタン --> 19 ・ 20 ・ 21 ・
↓コントローラーです。
ruby
1class UserInfosController < ApplicationController 2 3 before_action :search_user_info, only: [:index, :search] 4 5 def index 6 @promotion_male = UserInfo.joins(:user).where(users: { gender: "男"}).count 7 @promotion_female = UserInfo.joins(:user).where(users: { gender: "女"}).count 8 unless user_signed_in? 9 @user_infos = UserInfo.all.order(id: "DESC") 10 set_user_info_column 11 return 12 end 13 if current_user.gender == "女" 14 @user_infos = UserInfo.joins(:user).where(users: { gender: "男"}).order(id: "DESC") 15 set_user_info_column 16 elsif current_user.gender == "男" 17 @user_infos = UserInfo.joins(:user).where(users: { gender: "女"}).order(id: "DESC") 18 set_user_info_column 19 end 20 end 21 ・ 22 ・ 23 ・
↓ターミナルのルーティングです。
user_info_favorites GET /user_infos/:user_info_id/favorites(.:format) favorites#index POST /user_infos/:user_info_id/favorites(.:format) favorites#create user_info_favorite DELETE /user_infos/:user_info_id/favorites/:id(.:format) favorites#destroy
試したこと
favorite#destroyのアクションのパスなんですが、ルーティングで確認すると"user_info_favorite"になっています。しかしこのままパスをビューに書くとindexのビュー自体が出なくなります。
逆にそのルーティングの最後に"s"を付けて、"user_info_favorites"にすると、ちゃんとindexが表示されます。
しかし、フォロー解除(お気に入り済)を押すと上記のようなルーティングエラーになります。。
ルーティング通り、:idも持ってきているのにエラーになってしまいます。
補足情報
どなたかわかる方いらっしゃったら、ぜひご回答お願いいたいます( ;∀;)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/30 15:37
2020/09/30 15:57
2020/10/01 01:15