2013-07-25 49 views
0

我無法找到有效的異步方法來測試用戶輸入的電子郵件是否唯一。我不想在我的控制器中使用驗證,因爲我想在用戶提交表單之前顯示一個彈出窗口。Ruby on Rails測試電子郵件唯一性Javascript

我基本上試圖做User.find(:all,:conditions => [「email ==?」,current_user.email]),但是從我的html頁面的javascript中。

回答

0

您需要像這樣:

  • 在你的控制器的方法,檢查電子郵件的獨特性,像unique = (User.find(:all, :conditions => ["email == ?", current_user.email])).length == 0。讓它只返回像這樣的JSON:render json: unique。不需要觀看。
  • 該方法的路徑。
  • JavaScript中的一個函數,用於向上述路由發送電子郵件並獲取JSON文檔作爲回報。

下面是使用jQuery一個未經考驗的例子:

function isEmailUnique(email) { 
    jQuery.get('/my-controller/test-email-uniqueness', email, function(json) { 
    if (json.unique) { 
     // Tell the user the email is in use. 
    } 
    }); 
} 

應該這樣做。您需要對控制器返回的JSON文檔的結構稍作處理。 不要歸還整個用戶記錄,因爲這可以給邪惡的人訪問他們不應該訪問的東西。最好是返回類似{ 'email': '[email protected]', 'unique': true }

希望它有幫助。