Skip to content

Archives

  • januar 2022
  • december 2021
  • november 2021
  • oktober 2021
  • september 2021

Categories

  • Ingen kategorier
Trend RepositoryArticles and guides
Articles

Routing i Rails

On januar 18, 2022 by admin
  • Hvad er routing helt præcist?
  • Hvordan foregår routing i Ruby on Rails?
  • Typer af HTTP-anmodningsmetoder
  • Afkodning af http-anmodningen
  • Definition af ressourcer
  • Enkelt og flere ressourcer
  • Nested Resources
  • Yderligere studier

Hvad er routing helt præcist?

Når brugeren sender en HTTP-anmodning til programmet, skal den ledes til den rigtige controller. Du kan forestille dig en router som en receptionist på, der stiller dig om til den rette person at tale med.

Hvordan foregår routing i Ruby on Rails?

I Rails bor ruterne i din applikation i config/routes.rb. Rails-routeren genkender URL’er og sender dem til en controllers handling. Den kan også generere stier og URL’er, så du undgår at skulle hardcode strings i dine visninger. Lad os overveje en applikation til at reservere værelser på forskellige hoteller og se på, hvordan dette fungerer.

Typer af HTTP-anmodningsmetoder

Programmet modtager en HTTP-anmodning, som medbringer en metode, som kan være:

GET – Henter en ressource

POST – Opretter en ressource

PUT – Opdaterer en ressource fuldstændigt

PATCH – Opdaterer en ressource delvist

DELETE – Sletter en ressource

Disse metoder bestemmer, hvilken controlleraktionsmetode der kaldes.

Afkodning af http-anmodningen

Hvis programmet modtager anmodningen, GET /hotels/1. Anmodningen sendes til hotels controllerens show handling show med { id: '1' } i params.

get '/hotels/:id', to: 'hotels#show'

Sådan er det også

get '/hotels', to: 'hotels#index'get '/hotels/:id', to: 'hotels#show'get '/hotels/new', to: 'hotels#new'post '/hotels', to: 'hotels#create'get '/hotels/:id/edit', to: 'hotels#edit'put '/hotels/:id', to: 'hotels#update'delete '/hotels/:id', to: 'hotels#destroy'

TIP: Hvis du nogensinde ønsker at få vist alle ruterne i din applikation, kan du bruge rails routes på din terminal, og hvis du ønsker at få vist ruterne for en bestemt ressource, kan du bruge rails routes | grep hotel. Dette vil liste alle ruterne for Hotel.

Definition af ressourcer

Som receptionisten har en registrering af alle reservationer, har programmet også sin egen registrering i config/routes.rb.

Rails.application.routes.draw do resources :hotelsend

Ved at skrive resources :hotels opretter vi alle syv forskellige ruter i dit program, som alle mapper til Hotels controller som nævnt ovenfor.

Hvis din controller kun har nogle få af disse handlinger, kan du ændre det samme med følgende nøgleord.

Nøgleordet omfatter kun kun de nævnte handlinger.resources :hotels, only:

Der er også nøgleordet undtagen til at nævne dem, du ikke ønsker at inkludere.

resources :hotels, except:

Enkelt og flere ressourcer

I nogle tilfælde har vi en enkelt ressource dvs. vi skal kun have adgang til en enkelt side i stedet for at henvise til et id. Det er i så fald, at vi bruger entalbetegnelsen, ressource.

resource :hotels

Når man skal definere flere ressourcer,

resources :hotels, :rooms hvilket fungerer på samme måde som

resources :hotels,resources :rooms

Nested Resources

Sommetider har vi nested routes, /hotels/:id/rooms som er et resultat af ressourcer, der logisk set er børn af andre ressourcer. Antag for eksempel, at din applikation indeholder disse modeller:

class Hotel < ApplicationRecord has_many :roomsendclass Room < ApplicationRecord belongs_to :hotelend

I så fald vil vi deklarere vores ressourcer på denne måde,

resources :hotels do resources :roomsend

Denne deklaration hjælper os med at få adgang til de indlejrede URL’er såsom /hotels/:id/rooms , /hotels/:id/rooms/:id , /hotels/:id/rooms/new osv

Yderligere studier

Hvis du vil grave dybere ned i routing, kan du læse Rails Routing udefra i http://guides.rubyonrails.org/routing.html.

Oversidefoto af Javier Allegue Barros på Unsplash (https://unsplash.com/photos/C7B-ExXpOIE)

Skriv et svar Annuller svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

Arkiver

  • januar 2022
  • december 2021
  • november 2021
  • oktober 2021
  • september 2021

Meta

  • Log ind
  • Indlægsfeed
  • Kommentarfeed
  • WordPress.org
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress