我无法找到有效的异步方法来测试用户输入的电子邮件是否唯一。我不想在我的控制器中使用验证,因为我想在用户提交表单之前显示一个弹出窗口。
我基本上尝试使用我的html页面上的javascript中的User.find(:all,:conditions => [“email ==?”,current_user.email])。
答案 0 :(得分:0)
你需要这样的东西:
unique = (User.find(:all, :conditions => ["email == ?", current_user.email])).length == 0
。让它像这样返回JSON:render json: unique
。不需要观点。这是一个使用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 }
希望它有所帮助。