Wir haben das Routing in Rails-Anwendungen zusammengefasst.
Überprüfen Sie den "Effekt des Routings" und den "praktischen Gebrauch".
** Fazit ** -Es ist möglich, die Verarbeitung an den Controller und die Aktion basierend auf der HTTP-Anforderung zu übergeben. -Hilfemethoden ermöglichen es Ihnen, Pfade und URIs in Controllern und Ansichten zu erstellen.
Beim Routing werden HTTP-Anforderungen von Clients nach dem folgenden Code sortiert.
Bild des Routings
[HTTP-Methode] '[URI-Pfad]', to: '[Controller-Name]#[Aktionsname]'
Beispiel) get 'samples', to: 'samples#index'
Mit anderen Worten, in diesem Beispiel ...
Wenn der Client mit ** "GET-Methode" ** und ** "Beispielpfad" ** zugreift Prozess mit ** "Indexaktion" ** von ** "Samples Controller" ** der Rails-Anwendung
Es bedeutet, dass · · ·
Durch die Beschreibung des Routings können Sie in der Rails-Anwendung ** "\ _path method" und "\ _url method" ** verwenden. Mit dieser Methode können die Methode redirect_to in der Steuerung, die Methode link_to in der Ansicht usw. mithilfe von path beschrieben werden.
Es ist eine Hilfsmethode, die auf einfache Weise Pfade und URLs generiert, indem sie wie ** "[Präfix] \ _ Pfad" ** oder ** "[Präfix] \ _ URL" ** verwendet wird.
Es wird die Datei config / route.rb
sein.
config/routes.rb
Rails.application.routes.draw do
get 'samples', to: 'samples#index'
end
Sie können dies überprüfen, indem Sie den Befehl Rails Routes
im Anwendungsverzeichnis über das Terminal ausführen.
Terminal
(Anwendungsverzeichnis)$ rails routes
Prefix Verb URI Pattern Controller#Action
samples GET /samples(.:format) samples#index
** "Präfix", "Verb", "URI-Muster", "Controller # Aktion" ** werden angezeigt. Bestimmen Sie den Inhalt der HTTP-Anforderung, indem Sie ** "Verb- und URI-Muster" ** kombinieren ** "Controller # Action" ** gibt an, wo der Prozess ausgeführt werden soll.
Es ist wie eine Variable, die bei Verwendung der Methoden "\ _path" und "\ _url" verwendet wird.
Beispiel) samples_path => "/ samples" samples_url => " http://sample.com/samples "
Es ist eine HTTP-Methode, die die Verarbeitung bestimmt.
Dies ist der Pfad des zu verarbeitenden URI.
index | Es ist der Name des Controllers und der Aktion, um den Prozess zu bestehen. Grundlegende 7 Arten von Aktionen Rails verfügt über ** "7 Arten von Aktionen" **, die standardmäßig verwendet werden. Aktionsname Zeigt eine Liste der Verwendungszwecke an |
new | Neues Datenformular anzeigen |
create | Registrieren Sie neue Daten |
show | Spezifische Daten anzeigen |
edit | Zeigen Sie die Bearbeitungsform bestimmter Daten an |
update | Aktualisieren Sie bestimmte Daten |
destroy | Löschen Sie bestimmte Daten |
Es kann grob in zwei Teile geteilt werden. ** "Einzeleinstellungen" ** und ** "Batch-Einstellungen" **.
Dies ist der Code, der das Routing ** Zeile für Zeile ** festlegt.
Rails.application.routes.draw do
get 'samples', to: 'samples#index'
post 'samples', to: 'samples#create'
put 'samples/:id', to: 'samples#update'
end
Sie können mehrere Routing-Einstellungen in Kurzcode schreiben.
Es ist ein Code, der das Routing von ** 7 Aktionen ** in einer Zeile festlegen kann.
Rails.application.routes.draw do
resources :samples
end
Entspricht dem folgenden individuell konfigurierten Routing
Rails.application.routes.draw do
get 'samples', to: 'samples#index'
post 'samples', to: 'samples#create'
get 'samples/new', to: 'samples#new', as: 'new_sample'
get 'samples/:id/edit', to: 'samples#edit', as: 'edit_sample'
get 'samples/:id', to: 'samples#show', as: 'sample'
patch 'samples/:id', to: 'samples#update'
put 'samples/:id', to: 'samples#update'
delete 'samples/:id', to: 'samples#destroy'
end
Durch Setzen von ** "als: 'XXX'" ** können Sie "XXX" ** im ** Präfix angeben.
Es ist ein Code, der das Routing von 6 Aktionen ** außer der ** Indexaktion in einer Zeile festlegen kann. Es wird verwendet, wenn ** jeder Benutzer nur eine Information (Ressource) im Anwendungsdesign hat. Da es nur eine Information enthält, gibt es keine Indexaktion (Auflistung mehrerer Ressourcen). ** ": id" ** wird dem URI-Pfad nicht hinzugefügt.
Beachten Sie auch, dass ** Controller Plural ** sind.
Rails.application.routes.draw do
resource :sample #Es ist in der Singularform
end
Entspricht dem folgenden individuell konfigurierten Routing
Rails.application.routes.draw do
post 'sample', to: 'samples#create'
get 'sample/new', to: 'samples#new', as: 'new_sample'
get 'sample/edit', to: 'samples#edit', as: 'edit_sample'
get 'sample', to: 'samples#show', as: 'sample'
patch 'sample', to: 'samples#update'
put 'sample', to: 'samples#update'
delete 'sample', to: 'samples#destroy'
end
Wenn Sie einige der Ressourcen / Ressourcenrouting-Aktionen verwenden möchten ** Geben Sie "nur Option" ** und ** "außer Option" ** an.
Rails.application.routes.draw do
#Verwenden Sie nur Index- / Show-Aktionen
resources :users, only: [:index, :show]
#Verwenden Sie andere Aktionen als indexieren / anzeigen / bearbeiten / aktualisieren / zerstören
resources :books, except: [:index, :show, :edit, :update , :destroy]
end
$ rails routes
Prefix Verb URI Pattern Controller#Action
users GET /users(.:format) users#index
user GET /users/:id(.:format) users#show
books POST /books(.:format) books#create
new_book GET /books/new(.:format) books#new
Zusätzlich zu den 7 grundlegenden Aktionen von Rails können Sie Aktionen mit ** "Member Routing" ** und ** "Collection Routing" ** hinzufügen.
Dies ist eine Routing-Methode, die ** ": id" ** im URI-Pfad enthält.
Mitglieder-Routing
Rails.application.routes.draw do
resources :photos do
member do
get 'preview'
end
end
end
$ rails routes
Prefix Verb URI Pattern Controller#Action
preview_photo GET /photos/:id/preview(.:format) photos#preview
photos GET /photos(.:format) photos#index
Dies ist eine Routing-Methode, die den URI-Pfad ** ": id" ** nicht enthält. Der Code wird auf die gleiche Weise wie das Mitglieder-Routing geschrieben.
"Id" ist die Verwaltungsnummer der in der Anwendung registrierten Daten. Das Vorhandensein einer "ID" im Pfad bedeutet, dass "bei der Ausführung dieser Aktion die Kontrollnummer die erforderlichen Daten identifiziert".
Zum Beispiel, wenn Sie mit 7 grundlegenden Aktionen von Rails erklären Die Aktionen ** index / new / create ** haben keine "ID" im Pfad. Der Grund ist, dass ** keine spezifischen Daten ** zum Anzeigen der Liste benötigt werden und ** die zu registrierenden Daten ** keine "ID" haben.
Im Gegenteil, ** Aktionen anzeigen / bearbeiten / aktualisieren / zerstören ** ** Weil Sie bestimmte registrierte Daten anzeigen, ändern oder löschen können ** Ohne die "ID" ** weiß ich nicht welche Daten **, daher enthält der Pfad die "ID".
Es bedeutet "verschachtelt". Gibt an, dass das untergeordnete Element im übergeordneten Element in einer verschachtelten Struktur im Routing beschrieben ist.
Beispiel)Routing verschachtelter Ressourcen
Rails.application.routes.draw do
resources :books do
resources :reviews
end
end
In diesem Beispiel hat das übergeordnete Element namens books ein untergeordnetes Element namens reviews verschachtelt.
Mit verschachteltem Routing können Sie ein übergeordnetes Element dem Routing eines untergeordneten Elements zuordnen. Im obigen Beispiel sind Rezensionen (untergeordnete Elemente) immer an ein bestimmtes Buch (übergeordnetes Element) gebunden. Wenn Sie das Routing von Überprüfungen (untergeordnetes Element) überprüfen, sieht es so aus.
Prefix Verb URI Pattern Controller#Action
book_reviews GET /books/:book_id/reviews(.:format) reviews#index
POST /books/:book_id/reviews(.:format) reviews#create
new_book_review GET /books/:book_id/reviews/new(.:format) reviews#new
edit_book_review GET /books/:book_id/reviews/:id/edit(.:format) reviews#edit
book_review GET /books/:book_id/reviews/:id(.:format) reviews#show
PATCH /books/:book_id/reviews/:id(.:format) reviews#update
PUT /books/:book_id/reviews/:id(.:format) reviews#update
DELETE /books/:book_id/reviews/:id(.:format) reviews#destroy
Die Elemente ** "Präfix" ** und ** "URI-Muster" ** haben einen Verschachtelungseffekt.
Das übergeordnete Element steht vor dem untergeordneten Element. Es ist ein Präfix, das übergeordnete Elemente (Bücher) wie "book_reviews" und "new_book_review" enthält.
Vor dem untergeordneten Element stehen das übergeordnete Element und die ID des übergeordneten Elements.
Es wird ein URI-Muster sein, das ein übergeordnetes Element (Buch) mit dem Namen "/ books /: book_id / reviews" enthält.
Der Teil / books /: book_id
ist der Pfad, der ein bestimmtes übergeordnetes Element darstellt
"Mit welchem übergeordneten Element das untergeordnete Element verbunden ist" wird explizit angezeigt.
Das ist es.
Recommended Posts