2012-03-24 69 views

回答

5

您所看到的錯誤是因爲遠程驗證無法找到服務器上的資源。這是預期的,如果沒有找到該資源,則該資源是唯一的。

雖然我認爲這是返回語義上正確的狀態代碼,我不認爲瀏覽器應該顯示錯誤,我顯然會失去。因此,在下一個版本的ClientSideValidations中,我將更改此行爲以返回2xx範圍內的狀態代碼。對困惑感到抱歉。

+1

我認爲這將是巨大的......請馬上滾出來.. – dbKooper 2012-04-07 09:37:50

+0

在此修復程序的任何時間表?我也看到了鉻控制檯中的錯誤。 – plainjimbo 2012-04-23 21:37:56

+0

「soonish」?我現在很淹沒。我知道這是一個蹩腳的答案,對不起:( – bcardarella 2012-04-24 17:25:51

0

我有同樣的問題,導致一些問題,因爲我正在處理的應用程序有全球吐司消息,如阿賈克斯調用404錯誤。

既然如此,我做了這個補丁。你當然可以做更多。例如,改變JavaScript的工作方式是一個好主意,但是這個猴子補丁是我可以對代碼做出的最小改變,並且仍然可以獲得所需的功能。請注意,使用HTTP 204是因爲ClientSideValidations gem預計所有HTTP 200(非常特別的200)響應都是驗證失敗響應,因此,如果不更改javascript,則無法重用。

應用程序/配置/初始化/ client_side_validations.rb

ClientSideValidations::Config.disabled_validators = [] 

# Monkey Patch 

# Guranatee uniqueness middleware is fully loaded 
::ClientSideValidations::Middleware::Uniqueness 

module ClientSideValidations 
    module Middleware 
    class Uniqueness 
     def response 
     begin 
      if unique? 
      self.status = 204 # changed from 404 
      self.body = '' # changed from true 
      else 
      self.status = 200 
      self.body = 'false' 
      end 
     rescue NotValidatable 
      self.status = 500 
      self.body = '' 
     end 
     super 
     end 
    end 
    end 
end