2012-11-15 5 views
5

Tôi đang sử dụng Rails 3 với mongoid 2 và có một câu hỏi đơn giản liên quan đến xác nhận mongoid.Xác thực Mongoid đơn giản để tạo! - làm thế nào để hiển thị thông báo lỗi

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

Nếu tôi sử dụng .create! , nó chạy xác thực trên một lớp mô hình mongoid một cách chính xác, nhưng nó không đi đến khối khác để hiển thị lỗi. Thay vào đó nó sẽ trả về một trang lỗi đường ray nói ...

lỗi Mongoid :: :: validations trong TopicsController # tạo

Validation thất bại - Tên không thể để trống.

Tốt, nhưng làm cách nào để hiển thị hình ảnh đó trong chế độ xem thay vì tải trang thông báo lỗi xấu?

+1

thử với '@ forum.topics.new (tên : params [: topic] [: name]). save' trong điều kiện if? – MrYoshiji

+0

mà thực sự làm việc Yoshiji nếu bạn muốn đặt đó như một câu trả lời tôi sẽ chấp nhận nó, cảm ơn. – HelloWorld

+0

Bạn được chào đón :) – MrYoshiji

Trả lời

5

Hãy thử cách này:

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 

với cách này bạn sẽ có biến cục bộ errors mà là một Hash formated như sau:

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

Đó là một mảng, không phải là băm, phải không? – Geoffroy