我怎么知道电子邮件是动态设计的重复

时间:2015-03-06 17:08:39

标签: javascript jquery ruby-on-rails dynamic devise

我用设计制作了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');
    }
})

但我不知道如何检查此输入的电子邮件是否重复或不是动态的。设计中是否有任何功能可用?谢谢你的阅读。

2 个答案:

答案 0 :(得分:0)

在例如用户控制器中创建一个函数,该控制器接受一个参数(email)并返回一个布尔值。然后可以使用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
});

答案 1 :(得分:0)

我不知道如何用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

有关&#39; gon&#39;的更多说明请阅读this page