2010-11-02 95 views
0

我有一個正在通過jQuery AJAX提交表單...Rails的AJAX錯誤消息

該模型有一個字段的validates_presence_of,如果該字段爲空,軌吐回了XHR :role_idNot Defined.

我學會了如何自定義做:

validates_presence_of(:role_id, :message=> "Select a role to continue.") 

但是,吐出回:role_IDSelecta作用繼續。所以我發現這裏面可能有幫助,但IDK:

<% errors.each do |attribute, message| -%> 
    <% if message.is_a?(String)%> 
     <li><%= message %></li> 
    <% end %> 
<% end -%> 

我的問題是我該如何處理這種類型的來回在Rails 3的遠程形式?我想用AJAX提交,並以AJAX的方式發回錯誤信息?

想法?插件?

再次感謝

回答

2

呃......這不是Rails那樣做的隨地吐痰。這是你的控制器。所以當你的模型驗證失敗時,你可以吐出任何你喜歡的東西。您可能有一個創建和更新方法,每個方法都必須處理XHR。您自己決定如何與瀏覽器進行通信非常重要。

有人可能會認爲失敗的驗證應該創建一個錯誤(4xx)響應,但這實際上是一個HTTP,而不是應用程序響應代碼。在這種情況下,您的應用程序正確處理了請求,因此它需要返回200.因此,Ajax錯誤處理程序對您來說沒有多大用處 - 這對於真正的頁面未找到,服務器錯位等錯誤。

相反,您的成功處理程序需要檢查閃存散列以發現是否存在錯誤,如果是,則將錯誤文本放在頁面上的某個相關位置以供用戶使用。

看起來很有希望的插件是Stickies(http://github.com/JokerCatz/stickies)。一段時間以來,項目中沒有任何活動,但如果它不適用於您的Rails版本,則不應該太難分叉它並將其提升到當前的Rails級別。