2012-11-15 11 views
5

Ich benutze Rails 3 mit Mongoid 2 und habe eine einfache Frage bezüglich Mongoidvalidierung.Einfache Mongoid-Validierung für erstellen! - wie man Fehlermeldungen anzeigt

if @forum.topics.create!(name: params[:topic][:name]) 
    # success, do something 
else 
    #should handle errors but doesn't 
    render 'new' 
end 

Wenn ich die .create verwenden! Mit dieser Methode werden Validierungen für eine Mongod-Modellklasse korrekt ausgeführt, es wird jedoch nicht zum Else-Block geleitet, um den Fehler anzuzeigen. Stattdessen gibt es eine Schienen-Fehlerseite sagen ...

Mongoid :: Fehler :: Validierungen in TopicsController #

Validierung erstellen fehlgeschlagen - Der Name darf nicht leer sein.

Das ist gut, aber wie zeige ich das in einer Ansicht an statt eine hässliche Schienen Fehlermeldung Seite zu bekommen?

+1

versuchen mit '@ forum.topics.new (Name : params [: topic] [: name]) .Save' in der if-Bedingung? – MrYoshiji

+0

, dass tatsächlich funktioniert Yoshiji, wenn Sie das als Antwort setzen will ich werde es akzeptieren, danke. – HelloWorld

+0

Gern geschehen :) – MrYoshiji

Antwort

5

Versuchen Sie, diese Art und Weise:

new_topic = @forum.topics.new(name: params[:topic][:name]) 
if new_topic.save 
    # success, do something 
else 
    render 'new', errors: new_topic.errors.full_messages 
end 

mit dieser Art und Weise Sie die lokale Variable haben errors, die ein Hash wie folgt formatiert ist:

new_topic.errors.full_messages # => ["\"Name\" can't be blank"] 
+0

Es ist ein Array, kein Hash, nein? – Geoffroy

Verwandte Themen