Bine ați venit la Ruby on Rails From Scratch Week 2. Sperăm că această continuare a săptămânii 1 va contribui la continuarea educației dvs. în Rails. În această săptămână, vom face un pic mai mult cu obținerea unei pagini reale. Vom lucra, de asemenea, la adăugarea de mai multă interactivitate prin încorporarea rubinului în HTML și învățarea puțin despre variabile. După aceea, vom afla mai multe despre structura URL minuțioasă a Ruby și cum să o manipulați, plus alte lucruri. Aceasta va fi cu siguranță o săptămână ambalată!
Săptămâna trecută, am stabilit cadrul și am învățat mai multe despre rubin și șine. Apoi am învățat cum să creați o nouă aplicație și să generați un controler.
Acum că vom intra în sintaxa Rails, avem nevoie de un editor bun. Din moment ce șinele sunt un cadru relativ nou, nu are destulă gamă de editori de sintaxă suportate. Din fericire, sunt încă foarte bune acolo. Pentru ferestre, eu personal folosesc E Texteditor. Acesta are un mare suport pentru ruby, și dispune de scripturi automate pentru multe limbi. E editor de text ramificat de succesul programului exclusiv mac TextMate. Singurul dezavantaj pentru ambele sunt că nu sunt libere. Dacă căutați ceva liber, puteți merge întotdeauna cu Notepad-ul de încredere ++.
După cum ați putea să vă amintiți de săptămâna trecută, am terminat prin crearea unui controler pe care l-am sunat învăța. Acest lucru ne va conduce în tutorialul de astăzi. Acum vom folosi acel controller și vom crea o acțiune în controler. Apoi vom crea un fișier de vizualizare corespunzător. Vizualizarea reprezintă componenta arhitecturii MVC care conține, de obicei, toate codurile HTML și, prin urmare, este un fișier rubinit încorporat (rhtml).
Acum că avem controlerul de învățare generat, putem vizualiza fișierul rb mergând la app / controlere / learn_controller.rb. În acest moment, ar trebui să vedeți deja codul de mai jos:
Acest cod implicit permite acestui controler să moștenească comenzile implicite ale aplicației.
Acum trebuie să definim o metodă, mai exact o acțiune. Această acțiune va afișa adresa URL pentru vizualizare. Pentru a defini o acțiune numită Mai Mult, introdu codul următor:
Putem alege orice nume dorim. O strategie bună atunci când alegeți numele acțiunii, îi dă un nume care are legătură cu conținutul care va fi acolo. De asemenea, trebuie să alegeți numele în funcție de adresa URL dorită. Controlorul și acțiunea fac harta URL-ului. De exemplu, pentru a ajunge la pagina "mai mult", ați scrie, localhost: 3000 / learn / more. De fapt, să încercăm și să vedem ce se întâmplă:
Oops ... după cum puteți vedea din mesajul de eroare util, trebuie să realizăm o vizualizare.
Spre deosebire de controler, pentru a crea o vizualizare nu este nevoie să-l generăm prin consola. În schimb, putem crea un fișier nou. Când am generat controlerul, aflați, este posibil să fi văzut că un director (numit învățați) a fost creat în folderul app / view. Trebuie să creați un fișier .rhtml acolo și să îl numim acțiunea pe care am definit-o în controler.
O imagine are o mie de cuvinte, așa că te duci:
Și acum, doar pentru a testa pagina, vom adăuga un mic cod HTML și vom vedea ce se întâmplă. Tocmai am adăugat un cod HTML necesar și apoi un text și un titlu inactiv. Poți pune tot ce vrei aici.
Salvați-l și încercați din nou.
Foarte bine funcționează! Felicitări, ați creat prima pagină în Rails. Deși nu este mult acum, acum aveți o înțelegere de bază a modului de a crea o aplicație de șine de bază.
Ruby on Rails are câteva paradigme care urmează. De exemplu, în mod normal, când construiți o aplicație în șine, atunci când generați un controler, îl capitalizați și îl faceți singular. Deși nu am capitalizat actualul controler cu care lucrăm, este un obicei bun pentru a intra în momentul în care construiți aplicații reale. Îmi amintesc când învățam pentru prima oară pe Rails, ma frustrat că toate tutorialele pe care le-am citit, au menționat o paradigmă aici și acolo, dar nu i-au enumerat pe toate într-un singur loc. Nu vreau să vă fac același lucru! Dar, dacă le-aș explica acum toate, nu s-ar fi scufundat niciodată, ca și cum ați fi știut mai multe despre fiecare componentă. Deci, nu vă îngrijorați prea mult acum și o voi explica mai târziu în această serie.
Revizuire
Săptămâna trecută, am învățat cum să încorporăm codul șinelor într-un fișier rhtml. Dacă vă aduceți aminte, a <% -%> este cod procesat, dar nu include nimic care va fi de fapt trimis către utilizator. Pe de altă parte, <%= %> codul va fi afișat.
Math Time
Puteți face matematica cu rubinie ușor. Pentru acest exemplu, am creat o nouă acțiune în controlerul de învățare numit matematică. Vom face niște matematici simple care vor fi încorporate în etichetele de mai sus. Iată ce vom scrie:
Math Demo Va produce 4 + 5 sau 9?
După cum puteți vedea, a făcut matematica pentru noi:
Combinarea de coarde
Puteți crea un șir în ruby folosind ghilimele. Puteți chiar să combinați șiruri de caractere prin concatenarea lor împreună. Există mai multe moduri de a face acest lucru. Cel mai logic este să-l tratezi ca pe matematică:
Șir Demo <%= 'This is kind of boring' %>
<%= 'Will I combine' + 'With You?' %>
Când vom scoate acest lucru, vom arăta cât de exact este rubinul. Observați că nu există spațiu între combinație și cu. Pentru a adăuga un spațiu, adăugați unul înainte de citat la sfârșitul combinării sau înainte cu.
Ambele sunt foarte importante. Spun acest lucru din nou, deci îți dai în mod clar scopul. Semnul egal determină dacă utilizatorul o vede sau nu. Dacă ar fi trebuit să revedem ultimul cod de cod și să scoatem semnul egal din ambele fragmente, am avea doar o pagină goală. Acum, dacă atribuiți o variabilă sau ceva care nu scoate fizic nimic, atunci nu puneți semnul =,
Semnul - nu este necesar, ci un obicei bun pentru a intra. Dacă nu utilizați semnul =, atunci puneți un semn - atunci când închideți rubinul încorporat. Aceasta elimină spațiul alb care altfel ar fi introdus în cod. Acest lucru poate, în cazuri foarte rare, să încurce proiectul.
Nu putem merge mai departe fără a discuta despre variabile. Pentru cei care nu au nici o experiență în Javascript sau în orice limbă de pe server, s-ar putea să nu știți exact ce este o variabilă. Gândiți-vă la o variabilă ca la ceva care stochează puțină informație. Puteți apoi să analizați aceste date și să le manipulați, numindu-le numele.
Atribuirea unei variabile locale și afișarea acesteia
Alocarea a variabilă locală este destul de ușor. Iată cum l-ați asigna și apoi le afișați. Ați putea să faceți acest lucru într-o singură linie, dar arată diferența dintre rubinul procesat încorporat și rubinul încorporat și afișat (Semnul egal din nou :)):
Demonstrație variabilă <% text = 'This is a Variable' -%> <%= text %>
Și aici puteți vedea rezultatul:
Atribuirea unei variabile de instanță și afișarea acesteia
Problema cu variabilele locale este că sunt ... locale. Dacă trebuie să atribuiți o variabilă în controler și să o afișăm în vizualizare? Aici este locul variabile de instanta veniți. O variabilă de instanță este delimitată de o variabilă locală de semnul @ care este pus înaintea numelui. Rețineți că atât variabilele de instanță, cât și cele locale (precum și cele mai multe alte tipuri) nu pot avea majuscule și nu există spații.
Pentru a demonstra modul în care putem transmite conținutul dinamic între controler și vizualizare, va trebui mai întâi să inserăm codul în controlerul de învățare. Până acum am adăugat mai multe definiții pentru toate demosurile de mai sus. Aici este controlerul curent de învățare. După cum puteți vedea, am atribuit o variabilă de instanță în acțiunea variabilelor. Când utilizatorul solicită această acțiune, Rails caută definiția, o procesează și o trimite la vizualizare (în acest caz, valoarea variabilei):
clasa LearnController < ApplicationController def more end def math end def strings end def variables @text = 'Why Hello' end end
Acum ne vom referi la variabila din vizualizare:
Demonstrație variabilă <%= @text %>
Destul de sigur, variabila este trecută la vizualizare.
În această săptămână, am aflat despre stabilirea de acțiuni în controlori, definirea vederilor, a variabilelor locale și instant. Sper că ați găsit totul de ajutor! Săptămâna viitoare, va fi chiar mai interesant. Am de gând să finalizez elementele de bază ale interacțiunii controlerului și a vederii. Sperăm că vom avea, de asemenea, timp să învățăm mai multe tehnici de șine! După aceea, devine mai interesant! (Sintaxa Ruby, lucrul cu baze de date, schele etc.). Oricum, dacă aveți întrebări, asigurați-vă că vă anuntați; și voi fi sigur că te-am întors la tine!
Ca întotdeauna, vă rugăm să Digg acest lucru dacă te-a ajutat!