2012-11-15 13 views
5

Używam Rails 3 z mongoidem 2 i mam proste pytanie dotyczące sprawdzania poprawności mongoidów.Proste sprawdzanie poprawności do tworzenia! - jak wyświetlać komunikaty o błędach

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

Jeśli korzystam z .create! Metoda ta poprawnie uruchamia sprawdzanie poprawności dla klasy modelu mongoid, ale nie przechodzi do bloku else, aby wyświetlić błąd. Zamiast tego zwraca stronę błędu szyny mówiąc ...

Mongoid :: :: Błędy walidacji w TopicsController # tworzyć

Validation nie powiodło się - Nazwa nie może być puste.

To dobrze, ale jak wyświetlić to w widoku, zamiast otrzymywać brzydką stronę z komunikatem o błędach?

+1

spróbuj '@ forum.topics.new (nazwa : params [: topic] [: name]). save "w warunku if? – MrYoshiji

+0

, który faktycznie działa Yoshiji, jeśli chcesz to ująć jako odpowiedź, przyjmiemy to, dziękuję. – HelloWorld

+0

Nie ma za co :) – MrYoshiji

Odpowiedz

5

Spróbuj w ten sposób:

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 

z ten sposób będziesz mieć zmienną lokalną errors który jest Hash sformatowany jak następuje:

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

To tablica, a nie hash, nie? – Geoffroy