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