Ich bin ein Anfänger mit "super", der jeden Tag mit Rails zu kämpfen hat. Ich habe es vor einigen Wochen im Text gelesen, und wenn ich Ressourcen für das Routing verwende, weiß ich nicht, was es ist, aber ich erinnere mich, dass die Aktion und die HTTP-Methode miteinander verbunden sind, und ich habe weiterhin Ressourcen eingegeben, ohne den Grund zu kennen.
Natürlich gab es einen Moment, in dem ich so festgefahren und verstanden war, also dachte ich, ich würde mich hinsetzen und mich Ressourcen (Plural) und Ressourcen (Single) stellen, also schrieb ich diesen Artikel.
Eine Ressource ist eine Reihe von Informationen, die in einer Tabelle in der Datenbank gespeichert sind. Es ist eine sehr praktische Funktion, mit der Sie eine "RESTful" -App erstellen können, indem Sie mehrere Routen definieren, indem Sie Ressourcen in eine Zeile schreiben.
Wenn Sie keine Ressourcen verwendet haben
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
Ich muss alle Beschreibungen manuell eingeben, was sehr verwirrend ist. Allein damit scheint es für einen halben Tag zusammenzubrechen.
Also versuchte ich unter Verwendung der gemunkelten Ressourcen, das Routing zu beschreiben,
routes.rb
Rails.application.routes.draw do
resources :tweets
end
Hochwertig. Wenn ich das Terminal überprüfe,
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
Ist das Routing für die Durchführung der CRUD-Verarbeitung nicht hervorragend abgeschlossen? Das ist praktisch.
Hier ist der Typ, der mich stört. Tatsächlich gibt es auch eine Methode namens Ressource, die nicht nur im Plural, sondern auch in Singularform beschreibt. Lass es uns trotzdem überprüfen.
Wenn Sie sich den Inhalt des Routings mithilfe von Ressourcen ansehen,
routes.rb
Rails.application.routes.draw do
resource :tweet #resource(Einzelne Form)に合わせて、モデル名もtweetとEinzelne Formにしています!
end
Auf den ersten Blick sieht das Routing fast gleich aus. Wenn Sie jedoch das Terminal überprüfen, werden Sie feststellen, dass es einige Unterschiede zu dem Zeitpunkt gibt, an dem Sie Ressourcen geschrieben haben (Plural).
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
Es gibt zwei Hauptunterschiede: ① Gibt es eine Indexaktion? ② Gibt an, ob Folgendes in die URL </ strong> aufgenommen werden soll ist.
Tweets benötigen eine Listenfunktion. Wenn Sie sie also verwenden möchten, sollten es Ressourcen sein. Für Dinge, die nicht nach Index aufgelistet werden müssen, wie z. B. das Profil eines Benutzers, ist es jedoch besser, Ressourcen zu verwenden.
Im tatsächlichen Betrieb denke ich, dass es schwierig ist, sie richtig zu verwenden, aber in einfachen Worten, Bei mehreren in der Anwendung vorhandenen Ressourcen → Ressourcen Wenn die App nur eine Ressource enthält → Ressource Ich denke, es ist okay, so zu verstehen.
Jetzt kennen Sie den Unterschied zwischen Ressourcen und Ressourcen, es sind bereits 100 Personen! </ strong> Es ist 20 Millionen Jahre zu früh. Die einzigen Aktionen, die mithilfe von Ressourcen definiert werden können, sind die sieben oben aufgeführten Hauptaktionen.
"Ich möchte eine Follow-Funktion hinzufügen ..." "Ich frage mich, ob die Suchfunktion unmöglich ist ..." Wenn Sie aus 7 grundlegenden Aktionen wie z. B. Funktionen hinzufügen und diese hinzufügen möchten, sind dies bequemere Funktionen "Mitglied" und "Sammlung" </ strong> es gibt.
Stellen Sie sich vor, Sie implementieren eine Funktion zur Nachverfolgung von Benutzer zu Benutzer. Natürlich kann das Benutzermodell selbst auch Ressourcen zum Definieren des Routings verwenden (da die App mehrere Benutzer enthält).
Identifizieren Sie die IDs des Benutzers, ordnen Sie sie zu und legen Sie Aktionen für die einzelnen Ressourcen fest, die durch die IDs angegeben werden!
routes.rb
Rails.application.routes.draw do
resources :users do
get :follows, on: :member
get :followers, on: :member
end
end
Hallo das ist alles. Wenn ich das Terminal überprüfe,
Terminal
follows_user GET /users/:id/follows(.:format) users#follows
followers_user GET /users/:id/followers(.:format) users#followers
#Im Folgenden werden 7 Aktionen weggelassen
Erstaunlicherweise können Sie Follower und Follower-Aktionen für einzelne Ressourcen festlegen, einschließlich der Benutzer-ID!
Fahren Sie dann mit der Sammlung fort. Der Unterschied zum Mitglied besteht darin, dass Sie Aktionen für die gesamte Ressource festlegen können. Lassen Sie uns im Detail erklären.
Was das Routing betrifft,
routes.rb
Rails.application.routes.draw do
resources :users do
get :search, on: :collection
end
end
Es ist eine jährliche Veranstaltung geworden. Lassen Sie uns das Terminal überprüfen.
Terminal
search_users GET /users/search(.:format) users#search
#Im Folgenden werden 7 Aktionen weggelassen
Wenn Sie die Sammlung verwenden, können Sie ohne die: id in der URL zur Suchaktion weiterleiten.
Vielen Dank für Ihre lange und unkoordinierte Erklärung. Während ich mich erklärte, gab es einen Teil, der mein Verständnis vertiefte. Ich denke, je mehr ich es benutze, desto mehr wird es meinen Körper durchdringen. Ich hoffe, das hilft Ihnen beim Programmieren.
Recommended Posts