L'autre jour, j'ai résumé les différences entre les ressources et les ressources, mais il y avait quelques points à noter lors de leur utilisation en combinaison, alors je les ai résumés. Cliquez ici pour la différence → Différence entre les ressources et les ressources - Qiita
En utilisant des ressources en combinaison, vous pouvez facilement générer le routage suivant.
Tout le monde peut afficher la liste de tous les utilisateurs et les détails de chaque utilisateur, mais seuls les siens peuvent modifier les informations utilisateur.
config/routes.rb
  resources :users, only: [:index, :show]
  resource :user, only: [:show, :edit, :update]
En regardant les routes générées par les rails routes, cela ressemble à ce qui suit.
Terminal
   Prefix Verb  URI Pattern          Controller#Action
    users GET   /users(.:format)     users#index
     user GET   /users/:id(.:format) users#show
edit_user GET   /user/edit(.:format) users#edit
          GET   /user(.:format)      users#show
          PATCH /user(.:format)      users#update
          PUT   /user(.:format)      users#update
ʻUser GET / users /: id (.: Format) La partie de users # show`, user_path est assignée à / users /: id, donc la méthode d'assistance qui doit retourner / user n'est pas générée. Alors, j'ai essayé de le décrire dans l'ordre inverse.
config/routes.rb
  resource :user, only: [:show, :edit, :update]
  resources :users, only: [:index, :show]
En regardant les routes générées par les rails routes, cela ressemble à ce qui suit.
Terminal
   Prefix Verb  URI Pattern          Controller#Action
edit_user GET   /user/edit(.:format) users#edit
     user GET   /user(.:format)      users#show
          PATCH /user(.:format)      users#update
          PUT   /user(.:format)      users#update
    users GET   /users(.:format)     users#index
          GET   /users/:id(.:format) users#show
Si l'utilisateur local peut être identifié par la fonction de connexion (gestion de session), il n'est pas nécessaire d'inclure: id dans la requête, de sorte que le routage pour l'utilisateur local utilise "resource".
Afin de voir l'écran des détails des utilisateurs autres que vous-même, il est nécessaire de spécifier l'ID de l'utilisateur cible, ainsi resources génère une route qui inclut: id dans la demande.
Lors de la création d'un routage en combinant «ressource» utilisée au singulier et «ressources» utilisée au pluriel, écrivez la forme singulière «ressource» ci-dessus.