[RUBY] Ungültiger Routenname, bereits verwendet: So beheben Sie den Fehler in 'new_user_session'

Umgebung

Mac OS Catalina Ruby 2.7.1 Rails 6.0.3.2

Phänomen

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

Lösungen

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!

Schließlich

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

Ungültiger Routenname, bereits verwendet: So beheben Sie den Fehler in 'new_user_session'
wsimport-Fehlerbehandlung (Eine Klasse / Schnittstelle mit dem gleichen Namen "xxx" wird bereits verwendet)
Problemumgehung für bereits verwendete Adressen (Windows)
[Cloud9] Bereits verwendete Adresse [Lösung]