Railsのroutesでusersのresourcesとdevise_for :usersが重複しているのですが、前にroutesは上から順番に読み込まれるのでアドレスが重複してる場合は優先させたいルートを上に書けばいいと見たことがあり、現在のルートが
routes.rb
1Rails.application.routes.draw do 2 root to: "home#index" 3 4 devise_for :users, controllers: { 5 registrations: 'users/registrations', 6 sessions: "users/sessions", 7 } 8 resources :users, param: :name 9 10 resources :tweets do 11 resource :favorites, only: [:create, :destroy] 12 end 13 resources :relationships, only: [:create, :destroy] 14end
このようになっているのですが、この状態でusers/sign_outをするとusers/:name のルートへアクセスしてしまいます。
/users/sign_inにアクセスした際は、想定している動作をし、sessions#newを呼ぶのですが、Sign_outだけがsessions#destroyへアクセスせず、usersのshowを呼び、Couldn't find Userになります。(存在しないsign_outというnameカラムを持つuserのshowを呼び出しているため)
以下はrails/info/routesです
どなたか同じような経験をされている方がいましたら、ご教授お願いいたします。
new_user_session_path GET /users/sign_in(.:format)
users/sessions#new
user_session_path POST /users/sign_in(.:format)
users/sessions#create
destroy_user_session_path DELETE /users/sign_out(.:format)
users/sessions#destroy
........................................................................
........................................................................
user_path GET /users/:name(.:format)
users#show
PATCH /users/:name(.:format)
users#update
PUT /users/:name(.:format)
users#update
DELETE /users/:name(.:format)
users#destroy
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/09 09:08