Dubbi di un principiante

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

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

  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

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. :slight_smile:

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.
    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.
    http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html

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 :smiley:

  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

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:

  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??

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs