Skip to content

Archives

  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021

Categories

  • Brak kategorii
Trend RepositoryArticles and guides
Articles

Routing w Railsach

On 18 stycznia, 2022 by admin
  • Czym dokładnie jest routing?
  • Jak odbywa się routing w Ruby on Rails?
  • Typy metod żądania HTTP
  • Dekodowanie żądania http
  • Definiowanie zasobów
  • Pojedyncze i wielokrotne zasoby
  • Zagnieżdżone zasoby
  • Dalsze badania

Czym dokładnie jest routing?

Kiedy użytkownik zgłasza żądanie HTTP do aplikacji, powinno ono zostać skierowane do właściwego kontrolera. Możesz wyobrazić sobie router jako recepcjonistę, który łączy cię z właściwą osobą, z którą chcesz porozmawiać.

Jak odbywa się routing w Ruby on Rails?

W Railsach, trasy twojej aplikacji żyją w config/routes.rb. Router Railsów rozpoznaje adresy URL i wysyła je do akcji kontrolera. Może on również generować ścieżki i adresy URL, unikając potrzeby twardego kodowania ciągów znaków w twoich widokach. Rozważmy aplikację do rezerwacji pokoi w różnych hotelach i przyjrzyjmy się jak to działa.

Typy metod żądania HTTP

Aplikacja otrzymuje żądanie HTTP, które niesie ze sobą metodę, która może być:

GET – pobiera zasób

POST – tworzy zasób

PUT – całkowicie aktualizuje zasób

PATCH – częściowo aktualizuje zasób

DELETE – usuwa zasób

Metody te określają, która metoda akcji kontrolera jest wywoływana.

Dekodowanie żądania http

Jeśli aplikacja odbiera żądanie, GET /hotels/1. Żądanie jest wysyłane do akcji show kontrolera hoteli z { id: '1' } w parametrach.

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

Podobnie,

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'

WSKAZÓWKA: Jeśli kiedykolwiek będziesz chciał wylistować wszystkie trasy swojej aplikacji, możesz użyć rails routes na swoim terminalu, a jeśli chcesz wylistować trasy konkretnego zasobu, możesz użyć rails routes | grep hotel. To wyświetli wszystkie trasy Hotelu.

Definiowanie zasobów

Podobnie jak recepcjonista trzyma rekord wszystkich rezerwacji, aplikacja również ma swój własny rekord w config/routes.rb.

Rails.application.routes.draw do resources :hotelsend

Pisząc resources :hotels tworzymy wszystkie siedem różnych tras w aplikacji, wszystkie mapujące do kontrolera Hotels, jak wspomniano powyżej.

Jeśli twój kontroler ma tylko kilka z tych działań, możesz zmienić to samo za pomocą następujących słów kluczowych.

Słowo kluczowe obejmuje tylko wspomniane działania.resources :hotels, only:

Jest też słowo kluczowe except do nazwania tych, których nie chcesz uwzględniać.

resources :hotels, except:

Pojedyncze i wielokrotne zasoby

Czasami mamy pojedynczy zasób tj. musimy tylko uzyskać dostęp do pojedynczej strony zamiast odwoływać się do id. To wtedy używamy pojedynczego terminu, zasób.

resource :hotels

Gdy trzeba zdefiniować wiele zasobów,

resources :hotels, :roomsktóry działa tak samo jak

resources :hotels,resources :rooms

Zagnieżdżone zasoby

Czasami mamy zagnieżdżone trasy, /hotels/:id/roomsktóre są wynikiem zasobów, które są logicznie dziećmi innych zasobów. Na przykład, załóżmy, że twoja aplikacja zawiera te modele:

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

W takim przypadku zadeklarujemy nasze zasoby w ten sposób,

resources :hotels do resources :roomsend

Ta deklaracja pomaga nam uzyskać dostęp do zagnieżdżonych adresów URL, takich jak /hotels/:id/rooms , /hotels/:id/rooms/:id , /hotels/:id/rooms/new itd

Dalsze badania

Jeśli chcesz zagłębić się w routing, możesz odnieść się do Rails Routing z zewnątrz w http://guides.rubyonrails.org/routing.html.

Cover Photo by Javier Allegue Barros on Unsplash (https://unsplash.com/photos/C7B-ExXpOIE)

.

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Archiwa

  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021

Meta

  • Zaloguj się
  • Kanał wpisów
  • Kanał komentarzy
  • 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