Je suis un débutant avec "super" qui se débat tous les jours avec les Rails. Je l'ai lu dans le texte il y a quelques semaines, et si j'utilise des ressources pour le routage, je ne sais pas ce que c'est, mais je me souviens que l'action et la méthode HTTP sont liées, et j'ai continué à taper des ressources sans en connaître la raison.
Bien sûr, il y a eu un moment où une telle méthode et une telle compréhension se sont bloquées, alors j'ai décidé de m'asseoir et de faire face aux ressources (pluriel) et aux ressources (uniques), alors j'ai écrit cet article.
Une ressource est une ligne d'informations stockées dans une table de la base de données. C'est une fonction très pratique qui vous permet de créer une application "RESTful" en définissant plusieurs itinéraires simplement en écrivant des ressources sur une seule ligne.
Si vous n'avez pas utilisé de ressources
routes.rb
Rails.application.routes.draw do
get 'tweets' => 'tweets#index'
get 'tweets/:id' => 'tweets#show'
get 'tweets/new' => 'tweets#new'
post 'tweets' => 'tweets#create'
get 'tweets/:id/edit' => 'tweets#edit'
patch 'tweets/:id' => 'tweets#update'
delete 'tweets/:id' => 'tweets#destroy'
end
Je dois saisir manuellement toutes les descriptions, ce qui est très déroutant. Avec cela seul, il semble qu'il s'effondrera pendant environ une demi-journée.
Donc, en utilisant les ressources rumeurs, j'ai essayé de décrire le routage,
routes.rb
Rails.application.routes.draw do
resources :tweets
end
Haut de gamme. Quand je vérifie le terminal,
Terminal
tweets GET /tweets(.:format) tweets#index
POST /tweets(.:format) tweets#create
new_tweet GET /tweets/new(.:format) tweets#new
edit_tweet GET /tweets/:id/edit(.:format) tweets#edit
tweet GET /tweets/:id(.:format) tweets#show
PATCH /tweets/:id(.:format) tweets#update
PUT /tweets/:id(.:format) tweets#update
DELETE /tweets/:id(.:format) tweets#destroy
Le routage pour effectuer le traitement CRUD n'est-il pas terminé avec brio? C'est pratique.
Voici le gars qui me dérange. En fait, il existe également une méthode appelée ressource qui décrit non seulement au pluriel, mais également au singulier. Vérifions-le quand même.
En fait, si vous regardez le contenu du routage en utilisant la ressource,
routes.rb
Rails.application.routes.draw do
resource :tweet #resource(Forme unique)に合わせて、モデル名もtweetとForme uniqueにしています!
end
À première vue, le routage est presque le même. Cependant, si vous vérifiez le terminal, vous remarquerez qu'il existe des différences par rapport au moment où vous avez écrit des ressources (pluriel).
Terminal
new_tweet GET /tweet/new(.:format) tweets#new
edit_tweet GET /tweet/edit(.:format) tweets#edit
tweet GET /tweet(.:format) tweets#show
PATCH /tweet(.:format) tweets#update
PUT /tweet(.:format) tweets#update
DELETE /tweet(.:format) tweets#destroy
POST /tweet(.:format) tweets#create
Il existe deux différences majeures, ① Y a-t-il une action d'index? ② S'il faut inclure: id dans l'url </ strong> est.
Les tweets ont besoin d'une fonction de liste, donc si vous voulez l'utiliser, ce devrait être des ressources. Cependant, pour les éléments qui n'ont pas besoin d'être répertoriés par index, comme le profil d'un utilisateur, il est préférable d'utiliser la ressource.
En fonctionnement réel, je pense qu'il est difficile de les utiliser simplement, mais pour le dire simplement, Dans le cas de plusieurs ressources existant sur l'application → ressources S'il n'y a qu'une seule ressource sur l'application → ressource Je pense que c'est normal de comprendre comme ça.
Maintenant que vous connaissez la différence entre les ressources et les ressources, c'est déjà 100 personnes! </ strong> Il a 20 millions d'années d'avance. Les seules actions qui peuvent être définies à l'aide de ressources sont les sept actions principales répertoriées ci-dessus.
"Je veux ajouter une fonction de suivi ..." "Je me demande si la fonction de recherche est impossible ..." Si vous souhaitez développer à partir de 7 actions de base telles que, et ajouter des fonctions, des fonctions plus pratiques "membre" et "collection" </ strong> il y a.
Imaginez implémenter une fonction de suivi d'utilisateur à utilisateur. Bien entendu, le modèle User lui-même peut également utiliser des ressources pour définir le routage (car il y a plusieurs utilisateurs sur l'application).
Identifiez les identifiants de l'utilisateur, associez-les et définissez des actions pour les ressources individuelles spécifiées par les identifiants!
routes.rb
Rails.application.routes.draw do
resources :users do
get :follows, on: :member
get :followers, on: :member
end
end
Salut c'est tout. Quand je vérifie le terminal,
Terminal
follows_user GET /users/:id/follows(.:format) users#follows
followers_user GET /users/:id/followers(.:format) users#followers
#Ci-dessous, 7 actions sont omises
Étonnamment, vous pouvez définir des actions de suivi et d'abonnés pour des ressources individuelles, y compris l'identifiant de l'utilisateur!
Ensuite, passez à la collection telle qu'elle est. La différence avec membre est que vous pouvez définir des actions pour toute la ressource. Expliquons en détail.
Quant au routage,
routes.rb
Rails.application.routes.draw do
resources :users do
get :search, on: :collection
end
end
C'est devenu un événement annuel. Vérifions le terminal.
Terminal
search_users GET /users/search(.:format) users#search
#Ci-dessous, 7 actions sont omises
Si vous utilisez la collection, vous pouvez acheminer vers l'action de recherche sans: id dans l'url.
Merci pour votre explication longue et non coordonnée. En m'expliquant, il y avait une partie qui a approfondi ma compréhension, donc je pense que plus je l'utilise, plus elle imprégnera mon corps. J'espère que cela vous aidera à étudier la programmation.
Recommended Posts