# Dubbi di un principiante

**URL:** <https://www.ruby-forum.com/t/dubbi-di-un-principiante/112712>\
**Category:** IT\
**Created:** [August 22, 2007, 1:15pm UTC](https://www.ruby-forum.com/t/dubbi-di-un-principiante/112712 "2007-08-22T13:15:51Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![triplem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b19c9b/32.png) [@triplem](https://www.ruby-forum.com/u/triplem)\
**Post date:** [August 22, 2007, 1:15pm UTC](https://www.ruby-forum.com/t/dubbi-di-un-principiante/112712/1 "2007-08-22T13:15:51Z")

</div>

Ciao a tutti, ho iniziato da poco a studiare ruby grazie alla guida su  
HTML.it e ne sono subito rimasto affascinato. Ho comprato anche il libro  
della apogeo scritto da Marco C. e piano piano mi sto portando  
avanti ma ho alcuni dubbi che mi farebbe comodo chiarire subito:

1. Quando uso il metodo redirect\_to mi si azzerano le variabili di  
istanza, Ã¨ normale? Se si, come faccio ad ovviare, faccio un esempio:  
ho un metodo di servizio remove\_record, lo eseguo, c’Ã¨ un errore e  
voglio tornare indietro per visualizzare la descrizione dell’errore. Io  
avrei riempito una variabile @error e che avrei letto nella pagina  
index.rhtml ma tornati indietro quella variabile Ã¨ vuota.  
Se faccio una pagina remove\_record.rhtml e quindi non uso  
redirect\_to(:back) la variabile @error Ã¨ correttamente valorizzata.

2. Seguendo la guida ho creato un template comune application.rhtml e  
l’html comune lo inserisco quÃ ma come si fa ad includere documenti come  
stylesheet o anche riferimenti ad immagini se il riferimento a questi Ã¨  
variabile? Faccio un esmepio:

Nell’index del controller nessun problema  
[http://127.0.0.1:3000/home](http://127.0.0.1:3000/home)

ma appena utilizzo un metodo e l’indirizzo cambia perdo il link ai  
riferimenti  
[http://127.0.0.1:3000/home/msg](http://127.0.0.1:3000/home/msg)

Questo Ã¨ il mio link:

Grazie a chi avrÃ la pazienza di risolvere questi dubbi  
Ciao

---

<div class="post-metadata">

**Author:** ![triplem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b19c9b/32.png) [@triplem](https://www.ruby-forum.com/u/triplem)\
**Post date:** [August 22, 2007, 1:45pm UTC](https://www.ruby-forum.com/t/dubbi-di-un-principiante/112712/2 "2007-08-22T13:45:49Z")

</div>

> 1. Quando uso il metodo redirect\_to mi si azzerano le variabili di  
> istanza, è normale?

Mi sembra che per mantenere variabili nello stato successivo occorra  
usare il flash

---

<div class="post-metadata">

**Author:** ![triplem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b19c9b/32.png) [@triplem](https://www.ruby-forum.com/u/triplem)\
**Post date:** [August 22, 2007, 1:58pm UTC](https://www.ruby-forum.com/t/dubbi-di-un-principiante/112712/3 "2007-08-22T13:58:55Z")

</div>

On Wed, 22 Aug 2007 13:15:51 +0200, Marco M. wrote:

> index.rhtml ma tornati indietro quella variabile è vuota.  
> Se faccio una pagina remove\_record.rhtml e quindi non uso  
> redirect\_to(:back) la variabile @error è correttamente valorizzata.

Invece di usare redirect\_to userei render direttamente.

render :index dovrebbe darti index.rhtml

Sennò, come ti suggerisce Marco, usi il flash. Dovresti dare un’occhiata  
agli strumenti di gestione degli errori di Rails però. Fare da sé funziona,  
certo, ma rails è lì per aiutarti con queste robe noiose, quindi userei  
error\_messages\_for nella view.

> [http://127.0.0.1:3000/home/msg](http://127.0.0.1:3000/home/msg)
> 
> Questo è il mio link:
> 
> \<link rel="stylesheet" href="../stylesheets/style2.css"

Come sopra, rails ti vuol bene e ti da il metodo stylesheet\_link\_tag da  
mettere nel header del tuo layout. Fa proprio questo. 🙂

---

<div class="post-metadata">

**Author:** ![triplem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b19c9b/32.png) [@triplem](https://www.ruby-forum.com/u/triplem)\
**Post date:** [August 22, 2007, 3:26pm UTC](https://www.ruby-forum.com/t/dubbi-di-un-principiante/112712/4 "2007-08-22T15:26:21Z")

</div>

Marco M. ha scritto:

> 1. Quando uso il metodo redirect\_to mi si azzerano le variabili di  
> istanza, Ã¨ normale?  
> E’ normale, perchÃ© il metodo redirige il client su un’altra risorsa,  
> quindi esegue una nuova request perdendo tutto quello che avevi  
> precedentemente settato. Per ovviare a questo comunissimo problema, Ã¨  
> stato introdotto l’oggetto flash. Il quale gestisce in modo trasparente  
> il passaggio di errori (notice, messaggi) tra le request.  
> [Peak Obsession](http://api.rubyonrails.com/classes/ActionController/Flash.html)

> 1. Seguendo la guida ho creato un template comune application.rhtml e  
> l’html comune lo inserisco quÃ ma come si fa ad includere documenti come  
> stylesheet o anche riferimenti ad immagini se il riferimento a questi Ã¨  
> variabile?  
> Per il foglio di stile esiste il metodo stylesheet\_link\_tag.  
> In genere la risoluzione degli path viene gestita in modo intelligente  
> dagli appositi helpers.  
> [ActionView::Helpers::UrlHelper](http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html)

---

<div class="post-metadata">

**Author:** ![triplem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b19c9b/32.png) [@triplem](https://www.ruby-forum.com/u/triplem)\
**Post date:** [August 22, 2007, 4:46pm UTC](https://www.ruby-forum.com/t/dubbi-di-un-principiante/112712/5 "2007-08-22T16:46:34Z")

</div>

Il giorno 22/ago/07, alle ore 13:15, Marco M. ha scritto:

> Ciao a tutti, ho iniziato da poco a studiare ruby grazie alla guida su  
> HTML.it e ne sono subito rimasto affascinato. Ho comprato anche il  
> libro  
> della apogeo scritto da Marco C. e piano piano mi sto portando  
> avanti ma ho alcuni dubbi che mi farebbe comodo chiarire subito:

Eh, speriamo che il capitolo sui DB non faccia troppo cagare 😃

> 1. Quando uso il metodo redirect\_to mi si azzerano le variabili di  
> istanza, è normale? Se si, come faccio ad ovviare, faccio un esempio:  
> ho un metodo di servizio remove\_record, lo eseguo, c’è un errore e  
> voglio tornare indietro per visualizzare la descrizione  
> dell’errore. Io  
> avrei riempito una variabile @error e che avrei letto nella pagina  
> index.rhtml ma tornati indietro quella variabile è vuota.  
> Se faccio una pagina remove\_record.rhtml e quindi non uso  
> redirect\_to(:back) la variabile @error è correttamente valorizzata.

E’ normale: redirect è appunto un redirect, richiama un’altra azione  
totalmente slegata da quella precedente.  
Hai due alternative: usare render, che renderizza una vista usando  
ciò che gia’ ha (ovvero, da controller/foo puoi dare render  
controller/bar, e mantenere tutte le variabili di istanza di foo) o  
usare la variabile flash.

> riferimenti  
> [http://127.0.0.1:3000/home/msg](http://127.0.0.1:3000/home/msg)
> 
> Questo è il mio link:

Oddio, detta cosi’ suona un po’ confusa.  
I layout inglobano semplicemente la vista dell’azione, non sono  
rocket science.  
Hai ancora una volta due strade: definire variabili di istanza nelle  
varie azioni che settano i valori che ti servono e che vengono lette  
dal layout normalmente (soluzione bruttozza) o scriverti degli helper.

HTH,  
ngw

–  
Nicholas W.  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![triplem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b19c9b/32.png) [@triplem](https://www.ruby-forum.com/u/triplem)\
**Post date:** [August 24, 2007, 3:07pm UTC](https://www.ruby-forum.com/t/dubbi-di-un-principiante/112712/6 "2007-08-24T15:07:15Z")

</div>

Diego Guidi wrote:

> > 1. Quando uso il metodo redirect\_to mi si azzerano le variabili di  
> > istanza, ï¿½ normale?
> 
> Mi sembra che per mantenere variabili nello stato successivo occorra  
> usare il flash

Intanto grazie a tutti per le risposte.  
Si alla fine per i msg ho usato il flash, tra l’altro non Ã¨ niente male  
il fatto che al successivo refresh spariscano.

Il render mantiene le variabili di istanza ma non riesco a fare due  
cose: usare il back e passare parametri quindi lo uso solo in pochi casi

Il redirect non cancella le variabili di istanza come credevo ma crea  
delle nuove richieste sulle quali non porta le variabili, se infatti si  
fa un redirect\_to(:back) e si torna dove c’erano delle istanze, si  
ritrovano…

Per lo stylesheet ho usato l’helper, Ã¨ perfetto!

Ciao

PS Dopo aver usato ruby e rails tutto il resto mi sembra scomodo e  
cryptico, anche questo Ã¨ normale??
