Dorind să învețe cum să creeze site-uri se răcească și aplicații web, și luând ca instrument pentru Ruby on Rails, programatori novice sunt adesea atât de îndrăgostit de celebrul „magic“ al cadrului, care nici nu se gândesc la ceea ce este în centrul său. Un bun exemplu de astfel de farmec sunt cazuri în care noi se asteapta atribut controler este disponibil în fișierul de model, fără să știe modul în care interacționează aceste componente.
Cadrul Ruby on Rails este scris într-un limbaj dinamic orientat pe obiecte, numit Ruby. Fiecare linie de cod, fiecare element de magie perceput de novice ca o chestiune desigur, este rezultatul executării codului Ruby scris anterior de către dezvoltatorii cadrului.
Înainte de a continua lectura, asigurați-vă că aveți cel puțin o înțelegere de bază a modului în care să opereze Ruby: ce metode, ce argumentele unor metode care astfel de obiecte și clase. Dacă nu sunteți sigur că ați înțeles importanța acestor termeni, vă recomand să citiți cartea lui Chris Pine „Învață programul“ (este foarte scurt și deloc plictisitoare), precum și să se familiarizeze cu următoarele materiale:
Desigur, nu ar trebui să trecem cu vederea, și servicii educaționale interactive: să încerce propriile mâini pentru a scrie cod Ruby și să vedem ce se întâmplă, utilizați Try Ruby și Codecademy.
Odată ce sunt confortabile, cu sintaxa Ruby și apreciat potențialul său, propunem să ia în considerare un exemplu simplu, care descrie în mod clar situația în care este descrisă anterior în acest articol.
În controler, avem o variabilă de instanță @translated_text. conținând textul trimis din formular. Un programator începător presupune că magia lui Rails îi va permite să folosească această variabilă în model, dar nu este. De fapt, pentru exemplul codului modelului de lucru, trebuie să îl rescrieți astfel:
De ce în model nu puteți utiliza variabile de instanță care să ia valorile lor în controler și să aibă simbolul @ la început? Răspunsul este simplu: deoarece variabilele instanței controlerului nu sunt traduse în model. Controlerul stabilește variabile care vor fi utilizate în vizualizările acestui controler, ele nu au nimic de a face cu modelul. Ce trebuie să faceți pentru a evita astfel de greșeli? Nu vă bazați pe "magia" cadrului și studiați cu atenție documentația. În primul rând, este necesar să înțelegeți că Ruby on Rails nu este altceva decât un cod scris în Ruby și se comportă în conformitate cu ceea ce este descris în codul său sursă. Și codul sursă Rails este scris în așa fel încât dacă setați @ home în prezentarea de prezentare a controlerului HomeController. acesta va fi disponibil pentru utilizare în fișierul app / views / show.html.erb.
Să luăm în considerare încă un exemplu, mai simplu.
Să presupunem că avem un model Post:
Codul din exemplu pare foarte simplu și de înțeles, scris în limbă aproape umană. Totuși, aceasta este doar o linie de cod în Ruby, și anume metoda has_many. care ia mai multe argumente, în exemplul nostru este doar unul, numele modelului în plural ca simbol.
Un exemplu de utilizare a domeniilor și a parametrilor suplimentari (opțiuni)
În exemplul de mai sus, vedem scopul ->
Dacă te uiți la codul sursă al has_many. vom vedea că acesta este cel mai obișnuit cod din Ruby, care este scris în așa fel încât să întruchipeze funcționalitatea de care avem nevoie:
În același mod, toate Ruby on Rails și toate pietrele prețioase scrise de comunitate sunt aranjate.
În răspuns puteți găsi câteva linii:
Este ușor de înțeles că echipa vă permite să vedeți ce pietre sunt folosite de fiecare heme instalat în sistem ca suport pentru implementarea propriilor funcționalități. Un bloc de text de mai sus arată că Rails se bazează pe 9 pietre, fiecare dintre acestea putând fi utilizate separat de cadru. Fiecare dintre aceste pietre, la rândul său, poate folosi pe alții în centrul său, dar toate sunt scrise în Ruby obișnuit. Dacă studiați suficient această limbă, citirea codului sursă al aproape a oricărui heme, cadru sau script nu va fi o afacere mare. Iar cea mai bună înțelegere a posibilităților codului altcuiva vine exact în procesul de citire și înțelegere a acestui cod în sine.
Subiecte înrudite
- Câteva cuvinte despre interacțiuni în Rails
- Cum se face căutare full-text în Rails cu PostgreSQL
- Mai multe modele pentru scrierea unui cod de rubin de încredere
În cele din urmă a decis să facă auto-educație?
Apoi începeți cu ghidul nostru gratuit pentru lumea dezvoltării web. În interiorul o mulțime de sfaturi utile și materiale pentru auto-studiu.
Obțineți o carte