[RUBY] Informationen zum Rails-Routing

Überblick

Wir haben das Routing in Rails-Anwendungen zusammengefasst.

Dieses Ziel

Überprüfen Sie den "Effekt des Routings" und den "praktischen Gebrauch".

<1> Effekt des Routings

** 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.

So legen Sie den Controller und die Aktion fest

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 · · ·

Pfad- und URL-Helfer sind in Controllern und Ansichten verfügbar

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.

\ _ Pfadmethode ・ \ _ URL-Methode

Es ist eine Hilfsmethode, die auf einfache Weise Pfade und URLs generiert, indem sie wie ** "[Präfix] \ _ Pfad" ** oder ** "[Präfix] \ _ URL" ** verwendet wird.

<2> Praktische Anwendung

Ort der Routing-Einstellung

Es wird die Datei config / route.rb sein.

config/routes.rb


  Rails.application.routes.draw do
    get 'samples', to: 'samples#index'
  end

So überprüfen Sie das Routing

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.

Was ist das Präfix?

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 "

Was ist Verb (HTTP-Verb)?

Es ist eine HTTP-Methode, die die Verarbeitung bestimmt.

Was ist das URI-Muster?

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

So schreiben Sie grundlegendes Routing

Es kann grob in zwei Teile geteilt werden. ** "Einzeleinstellungen" ** und ** "Batch-Einstellungen" **.

individuelle Einstellung

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

Massenkonfiguration (ressourcenbasiertes Routing)

Sie können mehrere Routing-Einstellungen in Kurzcode schreiben.

Ressourcen (mehrere Ressourcen)

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
* Als Option

Durch Setzen von ** "als: 'XXX'" ** können Sie "XXX" ** im ** Präfix angeben.

Ressource (Einzelformularressource)

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

So schreiben Sie erweitertes Routing

Ressourcenbasierte Routing-Einschränkungen

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

Aktion für ressourcenbasiertes Routing hinzufügen

Zusätzlich zu den 7 grundlegenden Aktionen von Rails können Sie Aktionen mit ** "Member Routing" ** und ** "Collection Routing" ** hinzufügen.

Was ist Mitgliederrouting?

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

Was ist Sammlungsrouting?

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.

Was sich ändert, hängt vom Vorhandensein oder Fehlen von ": id" im URI-Pfad ab

"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".

Routing verschachtelter Ressourcen

Was ist nisten

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.

Auswirkung auf das Routing

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.

Auswirkung auf das Präfix

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.

Auswirkung auf das URI-Muster

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

Informationen zum Rails-Routing
Über Schienen 6
Grundlagen des Rails-Routings
Rails 6.0-Routing-Zusammenfassung
[Rails] Über ActiveJob!
Über Rails Controller
[Rails] Informationen zu Migrationsdateien
[Schienen 6] Über die wichtigsten Edelsteine
Catch Rails Routing-Fehler
[Rails] Über aktiven Hash
[Rails] Zusammenfassung der geroutenbezogenen Entwicklung
Informationen zur Versionsspezifikation für Schienen
[Hinweis] Bestätigung des Rails3-Routings
[Schienen] Vervollständigen Sie die Routing-Einstellungen
[Schienen] Standardwerte festlegen
Schienen Starke Parameter
[Anfänger] Über Rails Session
Informationen zu Ressourcen, die RESTful-Routing für Rails generieren
Informationen zum Benennen von Rails-Modellmethoden
[Rails] Informationen zur Struktur des scss-Ordners
Über =
Routing
[Rails] Informationen zum Rspec-Antworttest
Beziehung zwischen Rails Routing Controller-Ansicht
Wie schreibe ich Rails Routing
Über Rails Scraping-Methode Mechanisieren
Rails singuläres Ressourcenrouting nach Ressource
Über das Symbol <%%> in Rails erb
[Rails] Über die Implementierung der Like-Funktion
[Rails] Zusammenfassung der komplizierten Routing-Konfiguration
Stellen Sie eine andere ID als die für das Rails-Routing ein
[Rails] Über die Hilfsmethode form_with [Basic]
Ruby On Rails entwickelt Routing-Konflikte
Überlegungen zu Schienen und sauberer Architektur
Über method.invoke
[Schienen g. Fehler]
Über Kotlin
Rails Grundlagen
Über Hinemos
Rails API
Schienenmigration
Über die Vererbung
[Rails] first_or_initialize
Über Docker
Schienen Tutry
[Ruby on Rails] 1 Modell CRUD (Routing Main)
Über den Frühling ③