Ruby on Rails测试Javascript内部的电子邮件唯一性

时间:2013-07-25 03:14:50

标签: javascript html ruby-on-rails ajax ruby-on-rails-3

我无法找到有效的异步方法来测试用户输入的电子邮件是否唯一。我不想在我的控制器中使用验证,因为我想在用户提交表单之前显示一个弹出窗口。

我基本上尝试使用我的html页面上的javascript中的User.find(:all,:conditions => [“email ==?”,current_user.email])。

1 个答案:

答案 0 :(得分: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': 'user@example.com', 'unique': true }

之类的内容

希望它有所帮助。