RubyonRails在Javascript中测试电子邮件的唯一性

Ruby on Rails Test Email Uniqueness Inside Javascript

本文关键字:电子邮件 唯一性 测试 Javascript RubyonRails      更新时间:2023-09-26

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

我基本上是在尝试User.fund(:all,:conditions=>["email==?",current_User.email]),但在我的html页面上的javascript中。

您需要这样的东西:

  • 控制器中检查电子邮件唯一性的方法,如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 } 之类的东西

希望能有所帮助。