我怎么知道电子邮件被动态设计复制了
How can I know email is duplicated with devise dynamically
我设计了sign_up page
。在此页面中,可以检查输入的电子邮件是否有效。它像这样用 jQuery 动态输出消息。
// Output_email-message dynamically
$('#user_email').focusin(function () {
$('#user_email').keyup(function () {
$('#output-email').text('');
})
});
$('#user_email').focusout(function () {
$('#output-email').removeClass('field-output-comple').addClass('field-output');
if ($('#user_email').val().length < 1) {
$('#output-email').text('<%= t 'devise.registrations.output_email_blank' %>');
} else if (!isValidEmailAddress($('#user_email').val())) {
$('#output-email').text('<%= t 'devise.registrations.output_email_uncomple' %>');
} else {
$('#output-email').text('<%= t 'devise.registrations.output_email_comple' %>');
$('#output-email').removeClass('field-output').addClass('field-output-comple');
}
})
但是我不知道如何动态检查这个输入的电子邮件是否重复。有什么功能可以在设计中有用吗?感谢阅读。
例如在您的用户控制器中创建一个函数,该函数接受一个参数(电子邮件)和 returns 一个布尔值。然后可以使用 JQuery 通过 ajax 访问此功能,然后显示。
def check_email
return User.find_by(:email => params[:email]) ? true : false
end
并在你的路线中添加
get '/users/:email' => 'users#check_email', :defaults => { :format => 'json' }
然后在您的验证电子邮件功能中发送一个 ajax 请求来检查电子邮件。
$.get('/users/'+$('#user_email').text(), function(data){
// Print to html
});
我不知道如何用 ajax 编码。所以我用 gem gon 做了。这是我的代码。
new.html.erb
else if (!isDuplicateEmail($('#user_email').val())) {
$('#output-email').text('<%= t 'devise.registrations.output_email_duplicate' %>');
}
function isDuplicateEmail(emailAddress) {
if ($.inArray(emailAddress, gon.emails) == -1) {
return true
} return false
}
并且在您的控制器中,您应该将您的变量放入 gon
。这个控制器是 sign_up 设计的。所以我把它放在 new
方法
registrations_controller.rb
def new
gon.emails = User.pluck(:email)
puts 'indexr'
puts gon.emails
super
end
有关 'gon' 的更多解释,请阅读 this page。
我设计了sign_up page
。在此页面中,可以检查输入的电子邮件是否有效。它像这样用 jQuery 动态输出消息。
// Output_email-message dynamically
$('#user_email').focusin(function () {
$('#user_email').keyup(function () {
$('#output-email').text('');
})
});
$('#user_email').focusout(function () {
$('#output-email').removeClass('field-output-comple').addClass('field-output');
if ($('#user_email').val().length < 1) {
$('#output-email').text('<%= t 'devise.registrations.output_email_blank' %>');
} else if (!isValidEmailAddress($('#user_email').val())) {
$('#output-email').text('<%= t 'devise.registrations.output_email_uncomple' %>');
} else {
$('#output-email').text('<%= t 'devise.registrations.output_email_comple' %>');
$('#output-email').removeClass('field-output').addClass('field-output-comple');
}
})
但是我不知道如何动态检查这个输入的电子邮件是否重复。有什么功能可以在设计中有用吗?感谢阅读。
例如在您的用户控制器中创建一个函数,该函数接受一个参数(电子邮件)和 returns 一个布尔值。然后可以使用 JQuery 通过 ajax 访问此功能,然后显示。
def check_email
return User.find_by(:email => params[:email]) ? true : false
end
并在你的路线中添加
get '/users/:email' => 'users#check_email', :defaults => { :format => 'json' }
然后在您的验证电子邮件功能中发送一个 ajax 请求来检查电子邮件。
$.get('/users/'+$('#user_email').text(), function(data){
// Print to html
});
我不知道如何用 ajax 编码。所以我用 gem gon 做了。这是我的代码。
new.html.erb
else if (!isDuplicateEmail($('#user_email').val())) {
$('#output-email').text('<%= t 'devise.registrations.output_email_duplicate' %>');
}
function isDuplicateEmail(emailAddress) {
if ($.inArray(emailAddress, gon.emails) == -1) {
return true
} return false
}
并且在您的控制器中,您应该将您的变量放入 gon
。这个控制器是 sign_up 设计的。所以我把它放在 new
方法
registrations_controller.rb
def new
gon.emails = User.pluck(:email)
puts 'indexr'
puts gon.emails
super
end
有关 'gon' 的更多解释,请阅读 this page。