# Nuovo su rails: visualizzare gli errori

**URL:** <https://www.ruby-forum.com/t/nuovo-su-rails-visualizzare-gli-errori/158700>\
**Category:** IT\
**Created:** [January 26, 2009, 11:43pm UTC](https://www.ruby-forum.com/t/nuovo-su-rails-visualizzare-gli-errori/158700 "2009-01-26T23:43:37Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![aleee\_it](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f04885/32.png) [@aleee\_it](https://www.ruby-forum.com/u/aleee_it)\
**Post date:** [January 26, 2009, 11:43pm UTC](https://www.ruby-forum.com/t/nuovo-su-rails-visualizzare-gli-errori/158700/1 "2009-01-26T23:43:37Z")

</div>

Ciao  
sto facendo un po di pratica cohn rails.  
ho visto che utilizzando il generatore scaffloid quando c’e’ una form  
per valorizzare un modello, gli errori emersi dalla validazione vengono  
visualizzati coilorando la texfield di rosso.  
lo scafloid usa form\_for.

io vorrei ottenere lo stesso effetto utilizzando una form qualsiasi  
(form\_tag)  
ma non so come fare.

Sapete indicarmi voi come?  
oppure se c’e’ un qualche esempio su qualche sito…

Grazie  
Ciao  
Alessandro

---

<div class="post-metadata">

**Author:** ![aleee\_it](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f04885/32.png) [@aleee\_it](https://www.ruby-forum.com/u/aleee_it)\
**Post date:** [January 27, 2009, 11:06pm UTC](https://www.ruby-forum.com/t/nuovo-su-rails-visualizzare-gli-errori/158700/2 "2009-01-27T23:06:28Z")

</div>

On Mon, 2009-01-26 at 23:43 +0100, Alessandro A. wrote:

> Sapete indicarmi voi come?  
> oppure se c’e’ un qualche esempio su qualche sito…
> 
> Grazie  
> Ciao  
> Alessandro

se vuoi visualizzare tutti gli errori devi usare error\_messages\_for  
[http://api.rubyonrails.org/classes/ActionView/Helpers/ActiveRecordHelper.html#M001474](http://api.rubyonrails.org/classes/ActionView/Helpers/ActiveRecordHelper.html#M001474)

claudio

---

<div class="post-metadata">

**Author:** ![aleee\_it](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f04885/32.png) [@aleee\_it](https://www.ruby-forum.com/u/aleee_it)\
**Post date:** [January 28, 2009, 8:59pm UTC](https://www.ruby-forum.com/t/nuovo-su-rails-visualizzare-gli-errori/158700/3 "2009-01-28T20:59:58Z")

</div>

Claudio F. wrote:

> On Mon, 2009-01-26 at 23:43 +0100, Alessandro A. wrote:
> 
> se vuoi visualizzare tutti gli errori devi usare error\_messages\_for  
> [http://api.rubyonrails.org/classes/ActionView/Helpers/ActiveRecordHelper.html#M001474](http://api.rubyonrails.org/classes/ActionView/Helpers/ActiveRecordHelper.html#M001474)
> 
> claudio

Ci ho provato ma senza successo…  
credo di sbagliare qualcosa a monte:

io nella view metto  
…  
\<% form\_tag(:controller=\> “bookmarks”, :action =\> “create”) do%\>  
\<%= error\_messages\_for “bookmark”, :object =\> @bookmark %\>

```
    <p>
      Name: <%= text_field_tag 'name', @bookmark.name %>
    </p>

```

…

nel model  
…  
validates\_presence\_of :name  
…

nel controller:

def create  
@bookmark = Bookmark.new  
@bookmark.name = params[:name]  
if @bookmark.save  
flash[:notice] = ‘Tutto ok.’  
redirect\_to(:action =\> “list”)  
else  
flash[:error] = ‘Errore.’  
redirect\_to :back  
end  
end

quando non inserisco il name va in errore (vedo il flash error) ma non  
vedo nessun altro messaggio.

credo di sbagliare qualcosa o nella form o nel controller…  
ho anche provato a fare una redirect alla action new ma Ã¨ peggio…

avete qualche idea?

Grazie Ciao  
alessandro

---

<div class="post-metadata">

**Author:** ![aleee\_it](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f04885/32.png) [@aleee\_it](https://www.ruby-forum.com/u/aleee_it)\
**Post date:** [January 30, 2009, 9:17am UTC](https://www.ruby-forum.com/t/nuovo-su-rails-visualizzare-gli-errori/158700/4 "2009-01-30T09:17:17Z")

</div>

Alessandro A. wrote:

> Claudio F. wrote:
> 
> > On Mon, 2009-01-26 at 23:43 +0100, Alessandro A. wrote:
> > 
> > se vuoi visualizzare tutti gli errori devi usare error\_messages\_for  
> > [http://api.rubyonrails.org/classes/ActionView/Helpers/ActiveRecordHelper.html#M001474](http://api.rubyonrails.org/classes/ActionView/Helpers/ActiveRecordHelper.html#M001474)
> > 
> > claudio
> 
> Ci ho provato ma senza successo…  
> credo di sbagliare qualcosa a monte:

ho fatto dei passi avanti: nel controller invece di mettere redirect\_to  
:back  
ho usato render… sulla stessa pagina.  
in pratica ho una pagina che si chiama new in cui c’e’ la mia form, e la  
rispettiva action new. nella submit associo una action create, che se  
fallisce fa la render di new.  
tutto ok solo che nell’action new caricavo dei dati per una combo che  
sono ricostretto a ricaricare in caso di fallimento della create (posso  
evitarlo questo?).

ad ogni modo facendo cosi’ riesco a visualizzare gli errori.

ancora una domanda:  
guardando la documentazione che mi ha linkato claudio (grazie, fra  
l’altro) ho visto che c’e’ anche

error\_message\_on

che mi sembra ancora piÃ¹ adatto ai miei gusti, ovvero a me non piace  
molto avere il box con tutti gli errori, ma preferisco una piccola icona  
di errore con tooltip indicante il messaggio vicino alla input errata e  
error\_message\_on restituisce proprio il singolo messaggio.  
il “problema” Ã¨ che me lo restituisce in un div, e questo fa si che vada  
a capo rispetto alla input.

ho pensato (ma non ancora provato) di fare cosi’, prendere il sorgente  
di error\_message\_on e banalmente sostituire il div con uno span.

Ã¨ una prassi comune? secondo voi potrebbero esserci controindicazioni?

Grazie, ciao  
Alessandro

---

<div class="post-metadata">

**Author:** ![aleee\_it](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f04885/32.png) [@aleee\_it](https://www.ruby-forum.com/u/aleee_it)\
**Post date:** [January 30, 2009, 11:44am UTC](https://www.ruby-forum.com/t/nuovo-su-rails-visualizzare-gli-errori/158700/5 "2009-01-30T11:44:32Z")

</div>

Pietro G. wrote:

> 2009/1/30 Alessandro A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
> 
> > ho fatto dei passi avanti: nel controller invece di mettere redirect\_to  
> > :back  
> > ho usato render… sulla stessa pagina.  
> > in pratica ho una pagina che si chiama new in cui c’e’ la mia form, e la  
> > rispettiva action new. nella submit associo una action create, che se  
> > fallisce fa la render di new.  
> > tutto ok solo che nell’action new caricavo dei dati per una combo che  
> > sono ricostretto a ricaricare in caso di fallimento della create (posso  
> > evitarlo questo?).
> 
> potresti mostrarci piï¿½ in dettaglio i metodi new e create del controller?

vado un po’ a memoria (non ho sotto mano il codice)  
la new fa qualcosa tipo

def new  
@bookmark = Bookmark.new  
@dati\_combo = Tipologia.find(:all)  
end

per la create ho solo aggiunto di nuovo  
@dati\_combo = Tipologia.find(:all)  
prima di fare la render

> ah, ma soprattutto: perchï¿½ stai usando i metodi field\_tag?  
> soprattutto perchÃ¨ sono alle primissime armi, e avevo capito che si  
> devono usare quelli se si usa form\_tag. Se invece uso form\_for allora  
> posso usare gli altri… (mi sa che ho capito male…)

tu cosa useresti?

in questo caso non avevo usato form\_for perchÃ¨ i vari input vanno su  
diversi modelli (ma anche qui forse sto sbagliando a monte, meglio che  
una form aggiorni solo un modello e gli eventuali modelli associati  
tramite relazioni)

> > error\_message\_on  
> > […]  
> > il “problema” ï¿½ che me lo restituisce in un div, e questo fa si che vada  
> > a capo rispetto alla input.  
> > ho pensato (ma non ancora provato) di fare cosi’, prendere il sorgente  
> > di error\_message\_on e banalmente sostituire il div con uno span.
> 
> potresti cambiare lo stile del div.
> 
> display: inline
> 
> dovrebbe andare.

ok, sono alle prime armi anche sui css… (che vergogna…)

Grazie!!!

---

<div class="post-metadata">

**Author:** ![aleee\_it](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f04885/32.png) [@aleee\_it](https://www.ruby-forum.com/u/aleee_it)\
**Post date:** [January 30, 2009, 11:51am UTC](https://www.ruby-forum.com/t/nuovo-su-rails-visualizzare-gli-errori/158700/6 "2009-01-30T11:51:25Z")

</div>

Il 30 gennaio 2009 11.44, Alessandro A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:

> tramite relazioni)  
> [#75 Complex Forms Part 3 - RailsCasts](http://railscasts.com/episodes/75)

all’interno di form\_for puoi usare fields\_for, rendendo anche piÃ¹  
leggibile il codice.

un consiglio: dai un’occhiata alla lista degli episodi di railscasts,  
a me hanno cambiato la vita.

---

<div class="post-metadata">

**Author:** ![aleee\_it](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f04885/32.png) [@aleee\_it](https://www.ruby-forum.com/u/aleee_it)\
**Post date:** [January 31, 2009, 10:26am UTC](https://www.ruby-forum.com/t/nuovo-su-rails-visualizzare-gli-errori/158700/7 "2009-01-31T10:26:46Z")

</div>

Alessandro A. wrote:

> > > il “problema” ï¿½ che me lo restituisce in un div, e questo fa si che vada  
> > > a capo rispetto alla input.  
> > > ho pensato (ma non ancora provato) di fare cosi’, prendere il sorgente  
> > > di error\_message\_on e banalmente sostituire il div con uno span.
> > 
> > potresti cambiare lo stile del div.
> > 
> > display: inline
> > 
> > dovrebbe andare.

Ho provato, ma va a capo lo stesso…  
ho fatto in application\_helper il metodo error\_message\_on\_inline intutto  
e per tutto identico a error\_message\_on sostituendo span a div e  
funziona alla grande.

Grazie

ciao

---

<div class="post-metadata">

**Author:** ![aleee\_it](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f04885/32.png) [@aleee\_it](https://www.ruby-forum.com/u/aleee_it)\
**Post date:** [January 30, 2009, 11:24am UTC](https://www.ruby-forum.com/t/nuovo-su-rails-visualizzare-gli-errori/158700/8 "2009-01-30T11:24:25Z")

</div>

2009/1/30 Alessandro A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> ho fatto dei passi avanti: nel controller invece di mettere redirect\_to  
> :back  
> ho usato render… sulla stessa pagina.  
> in pratica ho una pagina che si chiama new in cui c’e’ la mia form, e la  
> rispettiva action new. nella submit associo una action create, che se  
> fallisce fa la render di new.  
> tutto ok solo che nell’action new caricavo dei dati per una combo che  
> sono ricostretto a ricaricare in caso di fallimento della create (posso  
> evitarlo questo?).

potresti mostrarci più in dettaglio i metodi new e create del controller?

ah, ma soprattutto: perché stai usando i metodi field\_tag?

> error\_message\_on  
> […]  
> il “problema” è che me lo restituisce in un div, e questo fa si che vada  
> a capo rispetto alla input.  
> ho pensato (ma non ancora provato) di fare cosi’, prendere il sorgente  
> di error\_message\_on e banalmente sostituire il div con uno span.

potresti cambiare lo stile del div.

display: inline

dovrebbe andare.

---

<div class="post-metadata">

**Author:** ![aleee\_it](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/f04885/32.png) [@aleee\_it](https://www.ruby-forum.com/u/aleee_it)\
**Post date:** [January 31, 2009, 10:31am UTC](https://www.ruby-forum.com/t/nuovo-su-rails-visualizzare-gli-errori/158700/9 "2009-01-31T10:31:23Z")

</div>

Pietro G. wrote:

> Il 30 gennaio 2009 11.44, Alessandro A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
> scritto:
> 
> > tramite relazioni)  
> > [#75 Complex Forms Part 3 - RailsCasts](http://railscasts.com/episodes/75)
> 
> all’interno di form\_for puoi usare fields\_for, rendendo anche piÃ¹  
> leggibile il codice.
> 
> un consiglio: dai un’occhiata alla lista degli episodi di railscasts,  
> a me hanno cambiato la vita.

grazie del consiglio.  
lo guardero’…
