【问题标题】:Ruby on Rails Test Email Uniqueness Inside JavascriptRuby on Rails 测试 Javascript 中的电子邮件唯一性
【发布时间】:2013-07-25 03:14:50
【问题描述】:
我无法找到一种有效的异步方法来测试用户输入的电子邮件是否唯一。我不想在我的控制器中使用验证,因为我想在用户提交表单之前显示一个弹出窗口。
我基本上是在尝试执行 User.find(:all, :conditions => ["email == ?", current_user.email]) 但在我的 html 页面上的 javascript 中。
【问题讨论】:
标签:
javascript
html
ruby-on-rails
ajax
ruby-on-rails-3
【解决方案1】:
你需要这样的东西:
- 控制器中检查电子邮件唯一性的方法,例如
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 }
希望对你有帮助。