Mac OS Catalina Ruby 2.7.1 Rails 6.0.3.2
Stellen Sie das Gerät für die Anmeldefunktion vor und legen Sie die Route fest. Danach habe ich beim Ausführen von Rails-Routen den folgenden Fehler erhalten.
Invalid route name, already in use: 'new_user_session' (ArgumentError)
You may have defined two routes with the same name using the `:as` option, or you may be overriding a route already defined by a resource with the same naming. For the latter, you can restrict the routes created with `resources` as explained here:
https://guides.rubyonrails.org/routing.html#restricting-the-routes-created
Anscheinend wird die Route mit dem Namen "new_user_session" bereits verwendet! Es scheint zu sagen.
Der Weg, auf dem das Phänomen auftritt, ist wie folgt.
routes.rb
Rails.application.routes.draw do
devise_for :users
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
root to: 'toppages#index'
resources :users, only: [:index, :show, :edit, :update, :destroy] do
member do
get :followings
get :followers
get :likes
end
end
devise_for :users,
path: '',
path_names: {
sign_up: '',
sign_in: 'login',
sign_out: 'logout',
registration: 'signup'
},
controllers: {
registrations: 'users/registrations',
sessions: 'users/sessions',
passwords: 'users/passwords'
}
devise_scope :user do
get 'signup', to: 'users/registrations#new'
get 'login', to: 'users/sessions#new'
get 'logout', to: 'users/sessions#destroy'
end
resources :posts, only: [:create, :destroy] do
collection do
get :search
end
end
resources :relationships, only: [:create, :destroy]
resources :favorites, only: [:create, :destroy]
end
Ich dachte "Ich habe nicht zwei Stellen definiert", aber plötzlich bemerkte ich, dass oben w eine Zeile hinzugefügt wurde Behebung durch Entfernen der Zeile devise_for: users.
routes.rb
Rails.application.routes.draw do
root to: 'toppages#index'
resources :users, only: [:index, :show, :edit, :update, :destroy] do
member do
get :followings
get :followers
get :likes
end
end
devise_for :users,
path: '',
path_names: {
sign_up: '',
sign_in: 'login',
sign_out: 'logout',
registration: 'signup'
},
controllers: {
registrations: 'users/registrations',
sessions: 'users/sessions',
passwords: 'users/passwords'
}
devise_scope :user do
get 'signup', to: 'users/registrations#new'
get 'login', to: 'users/sessions#new'
get 'logout', to: 'users/sessions#destroy'
end
resources :posts, only: [:create, :destroy] do
collection do
get :search
end
end
resources :relationships, only: [:create, :destroy]
resources :favorites, only: [:create, :destroy]
end
Ich konnte es sicher starten!
Bei bereits verwendeten Typfehlern kann davon ausgegangen werden, dass bereits das gleiche Routing wie in diesem Fall festgelegt wurde. (Wie es ist) Wenn derselbe Fehler in Zukunft auftritt, scheint er schnell behoben zu sein.
Recommended Posts