Ko pišete svoje programe od začetka do konca, je to enostavno videti nadzor toka. Program se začne tukaj, tam je zanka, klici metod so tu, vse je vidno. Toda v aplikaciji Rails stvari niso tako preproste. S kakršnim koli okvirom opustiš nadzor nad takšnimi stvarmi, kot je "tok", v korist hitrejšega ali enostavnejšega načina za izvajanje kompleksnih nalog. V primeru Ruby on Rails je krmiljenje pretoka vse v ozadju in vse, kar vam ostane, je (bolj ali manj) zbirka modelov, pogledov in krmilnikov.
V središču katere koli spletne aplikacije je HTTP. HTTP je omrežni protokol, ki ga vaš spletni brskalnik uporablja za pogovor s spletnim strežnikom. Od tod izvirajo izrazi, kot so "zahteva", "GET" in "POST", ki so osnovni besednjak tega protokola. Ker pa je Rails abstrakcija tega, o tem ne bomo porabili veliko časa.
Ko odprete spletno stran, kliknete povezavo ali pošljete obrazec v spletnem brskalniku, se brskalnik poveže s spletnim strežnikom prek TCP / IP. Brskalnik nato strežniku pošlje "zahtevo", misli o njem kot na poštni obrazec, ki ga brskalnik izpolni in zahteva informacije na določeni strani. Strežnik na koncu spletnemu brskalniku pošlje "odgovor". Ruby on Rails sicer ni spletni strežnik, spletni strežnik je lahko karkoli od Webricka (kar se običajno zgodi, ko zaženete strežnik Rails the
ukazna vrstica) do Apache HTTPD (spletni strežnik, ki poganja večino spleta). Spletni strežnik je samo spodbujevalnik, prevzame zahtevo in jo preda vaši aplikaciji Rails, ki ustvari odziv in preide nazaj na strežnik, ki ga nato pošlje nazaj v odjemalec. Do sedaj je tok:Prva stvar, ki jo aplikacija Rails naredi z zahtevo, je, da jo pošlje prek usmerjevalnika. Vsaka zahteva ima URL, to se pokaže v naslovni vrstici spletnega brskalnika. Usmerjevalnik je tisto, kar določa, kaj je treba storiti s tem URL-jem, če je URL smiseln in če URL vsebuje parametre. Usmerjevalnik je konfiguriran v config / route.rb.
Najprej vedite, da je končni cilj usmerjevalnika uskladiti URL z krmilnikom in dejanjem (več o tem kasneje). In ker je večina aplikacij Rails RESTful in so stvari v aplikacijah RESTful predstavljene z viri, boste videli vrstice, kot so viri: objave v značilnih aplikacijah Rails. To se ujema z URL-ji, kot je /posts/7/edit s kontrolerjem Posts, Uredi dejanje na pošti z ID-jem 7. Usmerjevalnik samo odloči, kam gredo zahteve. Tako lahko naš blok [Rails] nekoliko razširimo.
Zdaj, ko se je usmerjevalnik odločil, kateremu upravljavcu poslati zahtevo in kateremu ukrepu na tem krmilniku ga pošlje naprej. Krmilnik je skupina povezanih dejanj, ki so vsa združena v razredu. Na primer, v spletnem dnevniku je vsa koda za ogled, ustvarjanje, posodabljanje in brisanje objav v blogu združena v krmilniku, imenovanem »Objava«. Dejanja so povsem običajna metod tega razreda. Krmilniki se nahajajo v app / krmilniki.
Recimo, da je spletni brskalnik poslal zahtevo za /posts/42. Usmerjevalnik se odloči, da se to nanaša na Objava krmilnik, kažejo metoda in ID objave, ki jo je treba prikazati 42, zato pokliče kažejo metoda s tem parametrom. The kažejo metoda ni odgovorna za uporabo modela za pridobivanje podatkov in uporabo pogleda za ustvarjanje izhoda. Torej je zdaj naš razširjeni blok [Rails]:
Model je hkrati najpreprostejši za razumevanje in najtežji za izvedbo. Model je odgovoren za interakcijo z bazo podatkov. Najpreprostejši način razlage modela je preprost niz klicnih metod, ki iz baze podatkov vrnejo navadne predmete Ruby, ki obravnavajo vse interakcije (branje in zapisovanje). Tako po vzoru spletnega dnevnika bo API, ki ga bo krmilnik uporabil za pridobivanje podatkov po modelu, izgledal nekako tako Post.find (params [: id]). The param je tisto, kar je usmerjevalnik razčlenil iz naslova URL, Post pa je model. To naredi poizvedbe SQL ali naredi vse, kar je potrebno za pridobivanje objave na spletnem dnevniku. Modeli se nahajajo v aplikacija / modeli.
Pomembno je upoštevati, da ni treba pri vseh ukrepih uporabiti modela. Interakcija z modelom je potrebna le, kadar je treba podatke naložiti iz baze ali shraniti v bazo. V ta namen bomo v majhnem diagramu poteka postavili vprašalnik.
Končno je čas, da začnete ustvarjati nekaj HTML-ja. HTML ne upravlja krmilnik sam, niti ga ne obravnava model. Smisel uporabe okvira MVC je, da vse delimo. Operacije z bazo podatkov ostanejo v načinu, generacija HTML ostane v pogledu, krmilnik (ki ga imenuje usmerjevalnik) pa jih pokliče oba.
HTML se običajno ustvari z vdelanim Ruby. Če poznate PHP, torej datoteko HTML z vgrajeno PHP kodo, bo vdelani Ruby zelo znan. Ti pogledi se nahajajo v app / pogledi, in kontroler bo poklical enega od njih, da ustvari izhod in ga pošlje nazaj spletnemu strežniku. Vsi podatki, ki jih pridobi model s strani modela, se običajno shranijo v primerek spremenljivka ki bodo, zahvaljujoč neki Rubyjevi magiji, na voljo kot primerke spremenljivk znotraj pogleda. Tudi vgrajenemu Rubyju ni treba ustvarjati HTML-ja, lahko ustvari poljubno besedilo. To boste videli, ko generirate XML za RSS, JSON itd.
Ta izhod se pošlje nazaj spletnemu strežniku, ki ga pošlje nazaj spletnemu brskalniku, ki postopek zaključi.