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:
-
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.
-
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
ma appena utilizzo un metodo e l’indirizzo cambia perdo il link ai
riferimenti
http://127.0.0.1:3000/home/msg
Questo è il mio link:
Grazie a chi avrà la pazienza di risolvere questi dubbi
Ciao
- 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
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
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. 
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 
- 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
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.
[email protected]
Diego Guidi wrote:
- 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??