2012-11-15 59 views
5

我正在使用Rails 3與mongoid 2並有一個簡單的問題關於mongoid驗證。創建簡單的Mongoid驗證! - 如何顯示錯誤消息

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

如果我使用.create!方法,它會正確地在mongoid模型類上運行驗證,但它沒有進入else塊來顯示錯誤。相反,它返回一個軌道錯誤頁說...

Mongoid ::錯誤::驗證在TopicsController#創建

驗證失敗 - 名稱不能爲空。

這很好,但我該如何在視圖中顯示而不是獲取醜陋的rails錯誤消息頁?

+1

嘗試用'@ forum.topics.new(名:params [:topic] [:name])。save'在if條件中? – MrYoshiji

+0

如果你想把這個作爲答案,我會接受它,謝謝。 – HelloWorld

+0

不客氣:) – MrYoshiji

回答

5

試試這個方法:

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 

用這種方式,你將有局部變量errors這是格式化像下面一個Hash:

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

這是一個數組,不是哈希,不是? – Geoffroy

相關問題