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
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
claudio
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
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
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
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
Pietro G. wrote:
2009/1/30 Alessandro A. [email protected]:
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!!!
Il 30 gennaio 2009 11.44, Alessandro A. [email protected] ha
scritto:
tramite relazioni)
#75 Complex Forms Part 3 - RailsCasts
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.
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
2009/1/30 Alessandro A. [email protected]:
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.
Pietro G. wrote:
Il 30 gennaio 2009 11.44, Alessandro A. [email protected] ha
scritto:
tramite relazioni)
#75 Complex Forms Part 3 - RailsCasts
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’…