Ankstesnio straipsnio (MVC [I] - Architektūra) tęsinys.
MVC paprastai turi daug atmainų tačiau esminis procesas vyksta sekančiai:
- Vartotojas atlieka kažkokį veiksmą susijusį su GUI (pvz paspaudžia mygtuką);
- Kontroleris apdoroja šį veiksmą pagal nurodytą įvykių apdorojimo elementą (mol event handler);
- Kontroleris iškviečia modelį, kuris, turbūt, atlieka įvairius veiksmus su duomenimis (atnaujina registracijos informaciją, įdeda prekę į krepšelį ir pan.)
- Atitinkamas “vaizdas” naudojasi modeliu, kad sugeneruotu atitinkamai naują vartotojo sąsają (atvaizduoja naują registracijos informaciją, išmeta pranešimą apie į krepšelį įdėtą prekę).
- Vartotojo sąsaja laukia tolimesnių veiksmų iš vartotojo.
Jeigu šį procesą pritaikius RoR karkasui, gauname šią seką:
- Vartotojas kreipiasi tam tikru adresu į interneto svetainę (http://local.ruby.app.com/naujienos/sarasas);
- RoR karkasas pagal config/routes.rb failą (apie jį sukursiu atskirą įrašą) suranda atsakingą kontrolerį ir metodą su atitinkamais argumentais, kuris yra atsakingas už užklaustą adresą (app/controllers/news_controller.rb#List).
- Kontroleris kreipiasi į modelį (app/models/news.rb) norėdamas gauti duomenis, kuriuos perduoda “vaizdui”
- “Surenderina” atitinkamą “vaizdas” (app/views/news/list.rhtml) su duomenimis pateiktais iš modelio.
- Visas sugeneruotas html kodas yra pateikiamas vartotojui.
Jeigu į šį procesą žiūrėti nuo užklausos patiekimo serveriui, prisideda dar keletas punktų:
- Užklausa yra nusiunčiama /public/dispatch.cgi arba /public/dispatch.fcgi skriptui (priklausomai nuo serverio konfiguracijos. Skripte nurodoma surasti /config/environment, kuris savo ruožtu…
- …nustato sistemines konstantas (pvz, kaip RoR karkaso versiją), papildomus nustatymus ir…
- …per /config/boot bylą inicializuoja jūsų aplikaciją (skaityti aukščiau aprašytus penkis punktus);
Šiam kartui tiek. Vėliau pasistengsiu plačiau aptarti atskiras aplikacijos dalis: kontrolerius, modelius ir vaizdus.
Komentarai ir originalus straipsnis: http://blog.rubyonrails.lt/mvc-ii-procesas.html