Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

La costruzione dell'applicazione

Creazione dei controller utili alla visualizzare della homepage del forum, dell'indice dei messaggi e del loro contenuto
Creazione dei controller utili alla visualizzare della homepage del forum, dell'indice dei messaggi e del loro contenuto
Link copiato negli appunti

A questo punto possiamo cominciare a costruire la nostra applicazione. La prima cosa che desideriamo è la possibilità di visualizzare la lista dei topic e secondariamente visualizzare i messaggi per ognuno di essi. 

Creiamo quindi un controller chiamato Home tramite il solito script/generate ma passandogli due argomenti aggiuntivi, che servono a far costruire il codice base per delle azioni. Le azioni che creeremo sono due, ovvero un'azione show che mostri  tutti i messaggi per un topic, e un'azione chiamata index.  Quest'ultima è un po' speciale, in quanto è l'azione  che viene richiamato di default quando accederete a http://hostname/home.

$ ruby script/generate controller Home index show
     exists app/controllers/
     exists app/helpers/
     create app/views/home
     exists test/functional/
     create app/controllers/home_controller.rb
     create test/functional/home_controller_test.rb
     create app/helpers/home_helper.rb
     create app/views/home/index.rhtml
     create app/views/home/show.rhtml

Come già visto in precedenza, il comando crea una classe HomeController in app/controller/home_controller.rb, un helper e un file per scrivere i test di questo controller. 

Inoltre, poiché abbiamo aggiunto gli argomenti index e show sono stati creati anche due file .rhtml, ovvero due viste, che vedremo fra poco. Ad ogni vista corrisponde un metodo, e quindi nel codice del controller sono stati creati anche quelli:

class HomeController < ApplicationController

 def index
 end

 def show
 end
end

Ricordiamo che il def in Ruby serve a definire un metodo.

Questi metodi sono vuoti ma in realtà dovrebbero occuparsi si trovare le informazioni che vogliamo, quindi ridefiniamo il metodo  index in app/controllers/home_controller.rb  sostituendo quello vuoto con questo:

def index
 @topics = Topic.find(:all)
end

Se vi state chiedendo cosa sia quella cosa con la chiocciola state tranquilli. In Ruby come abbiamo visto, non c'è una parte dedicata alle dichiarazioni, e l'interprete potrebbe non capire quando parlate di una variabile d'istanza visibile in tutto l'oggetto o quando parlate di una variabile locale. Quindi le variabili d'istanza devono avere una "@" davanti, potete vederlo come un this in Java o PHP ma più conciso.

A questo punto è possibile anche spiegare il significato della stringa che viene mostrata in console quando lavoriamo con gli oggetti, ad esempio:

#<Entry:0x3991690 @new_record=true, @attributes={"created_on"=>nil, "url"=>"", "comment"=>""}>

Significa che abbiamo un oggetto di classe Entry, identificato da un numero esadecimale che dice dove si trova in memoria, il quale ha due variabili d'istanza chiamate rispettivamente @new_record e @attributes. La prima ha un valore booleano, ed indica che l'oggetto è stato creato da zero e non recuperato dal database, mentre la seconda è un Hash e contiene i vari attributi dell'oggetto come coppie nome/valore.

Ma, tornando all'azione index, perché mettiamo dei valori nella variabile @topic? Semplicemente perché le variabili d'istanza sono visibili anche nel file .rhtml, come vedremo fra poco.

Ti consigliamo anche