Forum: Italian Ruby user group nuovo su rails: visualizzare gli errori

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
A3d06794cb335cff5ceb2aced8ad535e?d=identicon&s=25 Alessandro Ale (aleee_it)
on 2009-01-26 23:43
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
26ff3eb6e9a81f6a9b55c9bcf4fab661?d=identicon&s=25 Claudio Fiorini (Guest)
on 2009-01-27 23:06
(Received via mailing list)
On Mon, 2009-01-26 at 23:43 +0100, Alessandro Ale 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/Help...

claudio
A3d06794cb335cff5ceb2aced8ad535e?d=identicon&s=25 Alessandro Ale (aleee_it)
on 2009-01-28 20:59
Claudio Fiorini wrote:
> On Mon, 2009-01-26 at 23:43 +0100, Alessandro Ale wrote:
>
> se vuoi visualizzare tutti gli errori devi usare error_messages_for
> http://api.rubyonrails.org/classes/ActionView/Help...
>
> 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
A3d06794cb335cff5ceb2aced8ad535e?d=identicon&s=25 Alessandro Ale (aleee_it)
on 2009-01-30 09:17
Alessandro Ale wrote:
> Claudio Fiorini wrote:
>> On Mon, 2009-01-26 at 23:43 +0100, Alessandro Ale wrote:
>>
>> se vuoi visualizzare tutti gli errori devi usare error_messages_for
>> http://api.rubyonrails.org/classes/ActionView/Help...
>>
>> 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
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-01-30 11:24
(Received via mailing list)
2009/1/30 Alessandro Ale <aleee.it@gmail.com>:
> 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.
A3d06794cb335cff5ceb2aced8ad535e?d=identicon&s=25 Alessandro Ale (aleee_it)
on 2009-01-30 11:44
Pietro Giorgianni wrote:
> 2009/1/30 Alessandro Ale <aleee.it@gmail.com>:
>> 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!!!
8768bcdbda1adf80e4da6744268868af?d=identicon&s=25 Pietro Giorgianni (giorgian)
on 2009-01-30 11:51
(Received via mailing list)
Il 30 gennaio 2009 11.44, Alessandro Ale <aleee.it@gmail.com> ha
scritto:
> tramite relazioni)
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.
A3d06794cb335cff5ceb2aced8ad535e?d=identicon&s=25 Alessandro Ale (aleee_it)
on 2009-01-31 10:26
Alessandro Ale 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
A3d06794cb335cff5ceb2aced8ad535e?d=identicon&s=25 Alessandro Ale (aleee_it)
on 2009-01-31 10:31
Pietro Giorgianni wrote:
> Il 30 gennaio 2009 11.44, Alessandro Ale <aleee.it@gmail.com> ha
> scritto:
>> tramite relazioni)
> 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'...
This topic is locked and can not be replied to.