Keď píšete svoje vlastné programy od začiatku do konca, je to ľahké vidieť riadenie prietoku. Program sa tu začína, je tu slučka, tu sú volania metód, všetko je viditeľné. V aplikácii Rails však veci nie sú také jednoduché. V rámci akéhokoľvek druhu sa vzdávate kontroly nad takými vecami ako „tok“ v prospech rýchlejšieho alebo jednoduchšieho spôsobu vykonávania zložitých úloh. V prípade Ruby on Rails je ovládanie toku všetky riešené v zákulisí a všetko, čo vám zostáva, je (viac či menej) zbierka modelov, pohľadov a ovládačov.
Jadrom každej webovej aplikácie je HTTP. HTTP je sieťový protokol, ktorý váš webový prehľadávač používa na komunikáciu s webovým serverom. Odtiaľ pochádzajú pojmy ako „žiadosť“, „GET“ a „POST“, sú základnou slovnou zásobou tohto protokolu. Avšak, pretože Rails je abstrakciou tohto, nebudeme tráviť veľa času hovoriť o tom.
Keď otvoríte webovú stránku, kliknete na odkaz alebo odošlete formulár vo webovom prehliadači, prehliadač sa pripojí k webovému serveru prostredníctvom TCP / IP. Prehliadač potom pošle serveru „požiadavku“, myslieť na to ako na e-mailový formulár, ktorý prehliadač vyplní a požiada o informácie na určitej stránke. Server nakoniec pošle webovému prehľadávaču „odpoveď“. Ruby on Rails však nie je webový server, webovým serverom môže byť čokoľvek od spoločnosti Webrick (čo sa zvyčajne stane, keď spustíte server Rails
príkazový riadok) na server Apache HTTPD (webový server, ktorý ovláda väčšinu webu). Webový server je iba sprostredkovateľ, berie požiadavku a odovzdá ju vašej aplikácii Rails, ktorý generuje odpoveď a prechádza späť na server, ktorý ju zasiela späť na server zákazník. Doteraz je tento tok:Jednou z prvých vecí, ktorú aplikácia Rails so žiadosťou robí, je odoslať ju prostredníctvom smerovača. Každá žiadosť má adresu URL. Toto sa objaví v paneli s adresou webového prehľadávača. Smerovač určuje, čo sa má s touto adresou URL urobiť, či má adresa URL zmysel a či adresa URL obsahuje nejaké parametre. Smerovač je nakonfigurovaný v config / routes.rb.
Najprv vedzte, že konečným cieľom smerovača je priradiť adresu URL k ovládaču a akcii (viac o nich neskôr). A keďže väčšina aplikácií Rails je RESTful a veci v aplikáciách RESTful sú zobrazené pomocou zdrojov, uvidíte podobné riadky zdroje: príspevky v typických aplikáciách Rails. Toto sa zhoduje s adresami URL, ako je /posts/7/edit s kontrolórom príspevkov editovať žaloba na príspevok s ID 7. Router iba rozhoduje, kam sa majú žiadosti obrátiť. Náš blok [Rails] sa teda môže trochu rozšíriť.
Teraz, keď sa router rozhodol, na ktorý kontrolér sa má žiadosť odoslať a na ktorú akciu na tomto kontroléri ju pošle. Ovládač je skupina súvisiacich akcií, ktoré sú spojené do triedy. Napríklad v blogu je všetok kód na prezeranie, vytváranie, aktualizáciu a odstraňovanie blogových príspevkov zoskupený do kontroléra nazývaného „Post“. Akcie sú jednoducho normálne metódy tejto triedy. Ovládače sa nachádzajú v app / radiče.
Povedzme, že webový prehliadač odoslal žiadosť o /posts/42. Router rozhodne, že sa to týka pošta ovládač, šou metóda a ID príspevku, ktorý sa má zobraziť, je 42, tak to volá šou metóda s týmto parametrom. šou metóda nie je zodpovedná za použitie modelu na získanie údajov a použitie zobrazenia na vytvorenie výstupu. Náš rozšírený blok [Rails] je teraz:
Tento model je najjednoduchšie pochopiteľný a najťažšie implementovateľný. Model je zodpovedný za interakciu s databázou. Najjednoduchším spôsobom, ako to vysvetliť, je model. Je to jednoduchá sada volaní metód, ktoré vracajú jednoduché Ruby objekty, ktoré spracovávajú všetky interakcie (čítania a zápisy) z databázy. Takže podľa príkladu blogu bude rozhranie, ktoré správca použije na načítanie údajov pomocou modelu, vyzerať asi takto Post.find (params [: id]). params je to, čo router analyzoval z adresy URL, príspevok je model. To vytvára dotazy SQL alebo robí všetko potrebné na získanie blogového príspevku. Modely sú umiestnené v app / models.
Je dôležité si uvedomiť, že nie všetky akcie musia používať model. Interakcia s modelom sa vyžaduje iba vtedy, keď je potrebné načítať údaje z databázy alebo uložiť do databázy. Preto vložíme otáznik do nášho malého vývojového diagramu.
Nakoniec je čas začať generovať HTML. HTML nespracováva samotný radič ani model. Zmyslom použitia rámca MVC je rozdeliť všetko na všetko. Databázové operácie zostanú v režime, generovanie HTML zostane v zobrazení a radič (nazývaný smerovačom) ich volá.
HTML sa zvyčajne generuje pomocou zabudovaného Ruby. Ak ste oboznámení s PHP, to znamená, že máte HTML súbor s vloženým PHP kódom, potom bude Ruby veľmi dobre známy. Tieto zobrazenia sa nachádzajú v meste app / views, a ovládač zavolá jedného z nich, aby vygeneroval výstup a poslal ho späť na webový server. Všetky údaje, ktoré regulátor získa pomocou modelu, sa spravidla uložia do súboru premenná inštancie ktoré budú vďaka nejakej Ruby mágii dostupné ako premenné inštancie z pohľadu. Vložený Ruby tiež nemusí generovať HTML, môže generovať akýkoľvek typ textu. Uvidíte to pri generovaní XML pre RSS, JSON atď.
Tento výstup sa odošle späť na webový server, ktorý ho odošle späť do webového prehľadávača, ktorý proces dokončí.