E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale Ruby on Rails

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  Ruby on Rails  /  Introducere in RoR (6)

Invata Ruby on Rails de la zero (Partea a III-a)

22.03.2009
Invata Ruby on Rails de la zero (Partea a III-a)

In acest tutorial vei putea citi despre cateva caracteristici ale platformei rails, despre cum sa manipulezi structura unui proiect si despre cum sa adaugi linkuri si sa comentezi codul.

Total vizualizari: 3800 3800 afisari   |   Comentarii  0   |   Rating   |   (2 voturi)   |   Timp necesar: 25 min 25 min   |   Nivel de cunostiinte necesar: Incepator  Incepator

Sursa:  net.tutsplus.com  
Autor:  Connor Zwick
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
« 1 2
comenteaza printeaza

Randarea in Rails

In primul tutorial din aceasta serie au fost prezentate cateva dintre setarile implicite ale platformei rails. Una dintre acestea este generarea automata de view-uri avand aceleasi nume cu actiunile dintr-un controller. Dar daca nu iti doresti asta? Rails iti ofera o alternativa care este utila si usor de implementat. Daca vei lucra la un proiect adevarat in RoR, vei vedea cat de aglomerat poate deveni un controler atunci cand trebuie sa creezi cate o actiune si cate un view pentru fiecare pagina. De aceea, rails vine cu o solutie ce poarte numele de randare (render), care iti ofera posibilitatea de a preciza ce view vrei sa utilizezi pentru fiecare actiune. Totusi, trebuie sa retii ca aceasta metoda, ca si linkurile amintite anterior, nu este cod ruby, ci o caracteristica a platformei rails, ce poate fi folosita doar in cadrul unui controler.

In acest prim exemplu, vom randa actiunea intr-un view care oricum ar fi fost generat in mod implicit. Cu alte cuvinte, rendernu va face nimic in plus:

def index   
    render :action => 'index'  
end

Randarea unei actiuni intr-un alt view

Ultimul exemplu nu este util cu adevarat deoarece nu face nimic in plus fata de setarile implicite ale platformei rails. Sa presupunem insa ca ai definit un view complicat pentru o actiune, si vrei sa-l utilizezi si pentru o alta actiune. Desigur, ai putea face o copie a acestui view, dar ar fi destul de dificil sa le actualizezi pe ambele. Poti rezolva aceasta problema prin randarea tutoror actiunilor similare intr-un singur view, ca in urmatorul exemplu:

text_controller.rb:

class LearnController < ApplicationController   
    def index   
        render :action => 'text'  
    end  
       
    def text   
        @text = '<u>Text</u>'  
    end  
       
    def other   
        @text = '<b>Alt text</b>'  
        render :action => 'text'  
    end  
end

text.html.erb:

<html>   
  <head>   
  <title>Demo randare</title>   
  </head><P></P>   
<body>   
       <p>Bine ai venit la <%= @text %> Page</p>   
<P></P>   
</body>   
  </html><P></P>

Explicarea codului

Actiunea Index

Poti observa ca am inclus o actiune denumita index, pe care o poti vizualiza daca accesezi directorul learn. Aceasta actiune functioneaza similar cu un fisier index.

Randarea in acelasi view

Pentru acest exemplu aveam nevoie de un singur view pentru toate actiunile.

Observatie: Ai grija sa nu randezi de doua ori aceeasi actiune, deoarece vei primi un mesaj de eroare. Asa cum tu nu poti fi in doua locuri deodata, nici o actiune nu reuseste acest lucru. Daca vrei sa vezi cum arata aceasta eroare, atribuie o actiune pentru doua view-uri. Pe masura ce faci proiecte mai complexe, actiunile devin mai complexe si mai greu de urmarit, si pot cauza aceasta eroare.

Asigura-te ca intelegi conceptele de baza ale randarii deoarece este o tehnica vitala pentru un developer rails.

Redirectionarea unei actiuni

Asemeni randarii, redirectarea unei actiuni este o caracteristica a platformei rails ce poate fi utilizata doar in cadrul unui controler. In plus, ea afecteaza ordinea executarii operatiilor dintr-o aplicatie.
Ai putea fi surprins de numarul mare de situatii in care vei folosi comanda de redirectare. Iata cateva dintre acestea:

  • Crearea paginilor alias;
  • Executarea unei actiuni intr-un controler, urmata de redirectarea catre o pagina secundara;
  • Redirectarea catre o pagina speciala daca a survenit o eroare;
  • Redirectarea catre pagina de autentificare daca utilizatorul nu este logat.

Codul de mai jos contine acelasi view din exemplul anterior si controlerul modificat astfel incat sa aiba loc redirectarea:

class LearnController < ApplicationController   
      def index   
        redirect_to :action => 'text'  
    end  
      def text   
        @text = '<u>Text</u>'  
        redirect_to :action => 'other'  
    end  
       
    def other   
        render :action => 'text'  
    end  
end

Daca apelezi actiunea index in browser, vei observa ca vei fi redirectat catre o alta actiune. Sa analizam codul:

In primul rand, actiunea index trimite la actiunea text. Daca vrei sa redirectezi catre un alt controler, atunci trebuie sa specifici numele acestuia, punand de exemplu :controller => 'learn' inaintea actiunii.

Browserul ajunge la actiunea text, unde este setata variabila @text. Dar browserul nu are nicio valoare pentru @text. Asta se intampla pentru ca redirectionarea nu mai retine nimic din acea actiune.

In final, are loc trimiterea catre actiunea other, care este randata in view-ul text.

Randare sau redirectare?

In unele situatii, este evident daca trebuie sa folosesti randare sau redirectare, dar altele prezinta dificultati. Ceea ce trebuie sa retii este ca redirectarea este recomandata daca ai de transmis informatii catre o baza de date, sau trebuie sa efectuezi orice alta activitate care afecteaza starea aplicatiei. In caz contrar, datele ar fi retransmise la refresh.

Incheiere

Sper ca ai invatat ceva din acest tutorial. Am introdus foarte multe concepte noi si de aceea daca ceva iti este neclar ar fi bine sa recitesti tutorialul.

Pagina:
« 1 2
comenteaza printeaza
Alte tutoriale Ruby on Rails:
Noteaza acest tutorial
Rating tutorial
 
(2 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
4810
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
4750
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
4625
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
4560
Tutoriale scrise de beacherrosa
beacherrosa Rang utilizator beacherrosa - Incepator
4420
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
Illustrator Swift 3D SWF Javascript Lightroom Vista Action Script Photoshop Outlook Excel Fotografie AJAX Verilog Fireworks MySQL RoR XML Bridge Java Powerpoint Ruby on Rails CSS Flash SEO HTML COREL DRAW Gimp Python Word StyleSheet Dreamweaver Sony Vegas PSD XHTML JSON PHP
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software