Ruby on Rails: HTTP, MVC si Routes

Acum intelegem cum functioneaza webul, vom studia arhitectura MVC si rutele Rails.

MVC inseamna Model (M), View (V) si Controller ©.

In aceasta arhitectura, avem „ separarea preocuparilor ” intre modele, vizualizari si controlere. Fiecare parte are propria responsabilitate. Sa ne scufundam in fiecare parte.

Model

„Mentine relatia dintre obiect si baza de date si gestioneaza validarea, asocierea, tranzactiile”

Inseamna ca modelul va mentine o relatie extrema cu baza de date . Fiecare model (poate) reprezinta un tabel de baze de date (in cazul bazelor de date SQL).

Array

Acest obiect model castiga capacitati (mostenite de la ActiveRecord – clasa Rails) pentru a prelua, salva, edita si sterge date din tabelul bazei de date. Utilizam obiecte model ca strat intre aplicatia noastra si baza de date.

Pe langa relatia cu baza de date, modelul poate crea validari si asociatii intre modele.

Vedere

„O prezentare a datelor intr-un anumit format, declansata de decizia operatorului de a prezenta datele.”

Este prezentarea raspunsului la cerere . Aceasta prezentare poate fi o gramada de tipuri de format: PDF, HTML, JSON , etc. Rezultatul final al unei vizualizari va fi probabil interfata cu utilizatorul (UI) – parte a „Clientului”.

Pentru majoritatea paginilor de pe web, vizualizarile vor fi in format HTML cu CSS si JS. Dar putem implementa PDF-uri despre comportamentul utilizatorilor pe un produs digital Travel pentru a le arata tuturor angajatilor modul in care oamenii isi folosesc si ei site-ul web.

Controlor

„Facilitatea din cadrul aplicatiei care directioneaza traficul, pe de o parte interogand modelele pentru date specifice si, pe de alta parte, organizand datele respective (cautand, sortand) intr-un formular care se potriveste nevoilor unei vizualizari date.”

Controlerul este „Maestro” . Se ocupa de flux: foloseste modele pentru a face interogari, analizeaza date, ia decizii in ce format veti prezenta datele.

Deci, imaginati-va ca lucram la un startup de calatorii. O parte din produs este de a prezenta calatorilor o lista de articole grozave despre povesti de calatorie si sfaturi.

Ganditi-va doar in perspectiva calatorului. Accesati www.worldpackers.com/articles si vedeti o pagina frumoasa care contine o gramada de articole grozave.

In momentul in care introduceti aceasta adresa URL in browser, aceasta face o cerere catre server. In server, avem aplicatia web Rails. Rails Router verifica daca exista o intrare care corespunde adresei URL solicitate.

Trebuie doar sa configuram rutele pentru aceasta linie:

Aceasta va crea rute RESTful pentru articole. Daca vom rula pachete de rute exec rake, va afisa lista cailor create.

Verbul HTTP poate fi GET, POST, PATCH, PUT sau DELETE. Si stim cum Rails mapeaza fiecare PATH la controlerul si actiunea potrivite. Cititi mai multe aici.

In cazul nostru, serverul va primi / articole cale si GET ca HTTP Verb. Se va mapa la ArticlesController si la actiunea index.

In controlerul ArticlesController folosim modelul Articol pentru a obtine toate articolele din baza de date si a reda vizualizarea index.html.erb ca raspuns al serverului (interfata de utilizare).

Prin conventie, acest controler va reda vizualizarea in views / articles / index.html.erb. Practic este un fisier HTML simplu alimentat de Ruby.

Ciclul de solicitare-raspuns Rails este unul dintre primele concepte pe care trebuie sa le intelegeti atunci cand incepeti sa invatati dezvoltarea web.

Utilizatorul face lucruri (solicita serverului), aplicatia Rails are routerul pentru a mapa calea URL-ului catre controlerul potrivit. In controler, putem face toate lucrurile cu un model (sau mai multe modele) – adica obtinerea, salvarea, editarea, stergerea datelor – si redarea unei vizualizari catre utilizator.