[RUBY] Nom de route non valide, déjà utilisé: Comment résoudre l'erreur dans "nouvelle_session_utilisateur"

environnement

Mac OS Catalina Ruby 2.7.1 Rails 6.0.3.2

phénomène

Présentez la fonction de connexion et définissez l'itinéraire. Après cela, lorsque j'ai exécuté des routes Rails, j'ai eu l'erreur suivante.

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

Apparemment, la route nommée "nouvelle_session_utilisateur" est déjà utilisée! Il semble dire.

L'itinéraire lorsque le phénomène se produit est le suivant.

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

Solution

Je pensais "je n'ai pas défini deux lieux", mais tout à coup j'ai remarqué qu'une ligne avait été ajoutée en haut w Résolu en supprimant la ligne 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

J'ai pu le démarrer en toute sécurité!

finalement

Pour les erreurs de type déjà utilisées, il semble bon de penser que le même routage a déjà été défini comme dans ce cas. (Tel quel) Si la même erreur se produit à l'avenir, elle semble être résolue rapidement.

Recommended Posts

Nom de route non valide, déjà utilisé: Comment résoudre l'erreur dans "nouvelle_session_utilisateur"
gestion des erreurs wsimport (une classe / interface avec le même nom "xxx" est déjà utilisée)
Solution de contournement d'adresse déjà utilisée (Windows)
[Cloud9] Adresse déjà utilisée [Solution]