Skip to content

Archives

  • Leden 2022
  • Prosinec 2021
  • Listopad 2021
  • Říjen 2021
  • Září 2021

Categories

  • Žádné rubriky
Trend RepositoryArticles and guides
Articles

Směrování v Rails

On 18 ledna, 2022 by admin
  • Co přesně je směrování?
  • Jak se směrování provádí v Ruby on Rails?
  • Typy metod požadavků HTTP
  • Dekódování http požadavku
  • Definování zdrojů
  • Jednotlivé a vícenásobné zdroje
  • Vnořené zdroje
  • Další studium

Co přesně je směrování?

Pokud uživatel pošle do aplikace požadavek HTTP, měl by být přesměrován na správný kontrolér. Směrovač si můžete představit jako recepčního na recepci, který vás spojí se správnou osobou, s níž máte mluvit.

Jak se směrování provádí v Ruby on Rails?

V Rails jsou trasy vaší aplikace umístěny v config/routes.rb. Směrovač Rails rozpoznává adresy URL a odesílá je do akce kontroléru. Dokáže také generovat cesty a adresy URL, čímž se vyhnete nutnosti zadávat řetězce v pohledech natvrdo. Uvažujme aplikaci pro rezervaci pokojů v různých hotelech a podívejme se, jak to funguje.

Typy metod požadavků HTTP

Aplikace obdrží požadavek HTTP, který s sebou nese metodu, kterou může být:

GET – Získání zdroje

POST – Vytvoření zdroje

PUT – Úplná aktualizace zdroje

PATCH – Částečná aktualizace zdroje

DELETE – Odstranění zdroje

Tyto metody určují, která metoda akce řadiče bude zavolána.

Dekódování http požadavku

Pokud aplikace obdrží požadavek, GET /hotels/1. Požadavek je odeslán na akci kontroléru hotelu show s { id: '1' } v parametrech.

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

Podobně,

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: Pokud někdy chcete vypsat všechny trasy vaší aplikace, můžete na terminálu použít rails routes a pokud chcete vypsat trasy určitého zdroje, můžete použít rails routes | grep hotel. Tím se zobrazí seznam všech tras Hotelu.

Definování zdrojů

Podobně jako recepční má záznam o všech rezervacích, i aplikace má svůj vlastní záznam v config/routes.rb.

Rails.application.routes.draw do resources :hotelsend

Zapsáním resources :hotels vytvoříme ve své aplikaci všech sedm různých tras, které se mapují na kontrolér Hotely, jak bylo uvedeno výše.

Pokud váš kontrolér obsahuje pouze několik z těchto akcí, můžete je změnit pomocí následujících klíčových slov.

Klíčové slovo obsahuje pouze zmíněné akce.resources :hotels, only:

Existuje také klíčové slovo except pro pojmenování těch, které nechcete zahrnout.

resources :hotels, except:

Jednotlivé a vícenásobné zdroje

Někdy máme jediný zdroj, tj. musíme přistupovat pouze k jedné stránce místo odkazu na id. Tehdy používáme singulární termín, resource.

resource :hotels

Když musíme definovat více zdrojů,

resources :hotels, :rooms což funguje stejně jako

resources :hotels,resources :rooms

Vnořené zdroje

Někdy máme vnořené trasy, /hotels/:id/rooms které jsou výsledkem zdrojů, které jsou logicky potomky jiných zdrojů. Předpokládejme, že vaše aplikace obsahuje například tyto modely:

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

V takovém případě budeme naše zdroje deklarovat takto,

resources :hotels do resources :roomsend

Tato deklarace nám pomůže přistupovat k vnořeným adresám URL, jako jsou /hotels/:id/rooms , /hotels/:id/rooms/:id , /hotels/:id/rooms/new atd

Další studium

Pokud se chcete směrováním zabývat hlouběji, můžete se podívat do knihy Rails směrování zvenčí http://guides.rubyonrails.org/routing.html.

Obálkové foto: Javier Allegue Barros na Unsplash (https://unsplash.com/photos/C7B-ExXpOIE)

Napsat komentář Zrušit odpověď na komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Archivy

  • Leden 2022
  • Prosinec 2021
  • Listopad 2021
  • Říjen 2021
  • Září 2021

Základní informace

  • Přihlásit se
  • Zdroj kanálů (příspěvky)
  • Kanál komentářů
  • Česká lokalizace
  • 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