Presentazione e domandina da newbie


#1

Che dire… Era da un po’ che giravo intorno a Ruby e dopo l’eccellente
presentazione di Paolo D. al BarCamp di roma non ho resistito alla
tentazione di installarlo e cominciare a “smanettarci”.

All’inizio è stata un po’ dura sto seguendo i vari tutorial trovati in
giro su internet, utilissimi anche se per qualche aspetto non completi.

Ho un problemino, non so se questo sia il topic giusto nel caso non lo
fosse chiedo venia.

Questo è il codice di una funzione che mi serve ad aggiungere i commenti
a un piccolo forum che ho sviluppato.

Parte di home_controller.rb:

def add_message
if request.post?
topic=Topic.find(params[‘topic_id’])
message=Message.new(:body=>params[‘body’])
message.topic=topic
message.author=find_author()
message.save
if message.save
flash[:notice] = “Commento aggiunto!”
redirect_to :action => “show”, :id => topic
else
flash[:notice] = “Errore devi inserire un commento!”
redirect_to :action => “show”, :id => topic
end
end
end

Come noterete segnalo utilizzando il metodo “flash[]” il messaggio di
avvenuto inserimento o errore. Funziona ma non è completo. In caso di
errore vorrei dare un messaggio più dettagliato. Come posso fare per
passare al template (usando l’helper “error_messages_for” per esempio)
un errore più dettagliato usando appunto il responso definito nel
modello message.rb?

validates_presence_of :body,
:message => “Devi inserire un messaggio”
validates_length_of :body, :within => 1…1000

La complicazione maggiore è quando debbo aggiornare dalla stessa form
tabelle diverse a seconda dei campi. Cerco un modo per “unire” in
un’unica stringa gli eventuali messaggi di errore che ricevo dai
modelli.

Con l’occasione, avete degli indirizzi di qualche tutorial passo passo,
cercavo qualcosa realizzare un piccolo catalogo prodotti!

A presto!
Oliver


#2

ciao,

Oliver Hl wrote:

All’inizio è stata un po’ dura sto seguendo i vari tutorial trovati in
giro su internet, utilissimi anche se per qualche aspetto non completi.

In alcuni casi itutorial rischiano di rimanere indietro rispetto
all’evoluzione di rails (soprattutto con la 1.2 uscita in questi
giorni). Poi se (come credo) passato lo stadio di “lettura dei tutorial”
sarai ancora interessato, ti consiglio di prendere uno dei libri su
Rails (controllando che siano aggiornati a Rails 1.2!).

dunque se hai regole di validazione sui modelli Rails automaticamente
le controlla ed inserisce i messaggi di errore (completi) nei modelli.
A questo punto il modo piu semplice per stampare i messaggi nella pagina
e’ usare: error_message_on oppure error_messages_for (qui il
manuale:http://api.rubyonrails.com/classes/ActionView/Helpers/ActiveRecordHelper.html#M000564
).

Per esempio: <%= error_messages_for ‘message’ %> stampa un div con una
lista dei messaggi (a cui puoi applicare i tuoi stili). Ricordati solo
di assegnare l’oggetto ad una variabile di istanza nel controller (
@message = …) altrimenti non potrai avere accesso a questa nella vista

La complicazione maggiore è quando debbo aggiornare dalla stessa form
tabelle diverse a seconda dei campi. Cerco un modo per “unire” in
un’unica stringa gli eventuali messaggi di errore che ricevo dai
modelli.

io a volte ho fatto cosi (per avere maggior controllo sulla
presentazione):

    <% for error_msg in current_user.errors.full_messages %>
  • <%= error_msg %>
  • <% end %>

ciao,
Luca

Web: http://spazidigitali.com - http://thetyper.com
Email mailto://removed_email_address@domain.invalid
Skype callto://l.mearelli