电子邮件格式验证不适用于client_side_validation gem

时间:2015-04-24 15:09:33

标签: javascript ruby-on-rails client-side-validation

我正在使用gem client_side_validation在客户端一次验证多个电子邮件地址。它适用于除电子邮件格式之外的所有验证。它也正确验证了电子邮件格式(我不能将不规则的地址保存到数据库),但不能在客户端 - 当我尝试提交不规则的电子邮件地址时页面重新加载。有谁知道哪里可能有问题?如果需要,我会上传更多文件。

这是config/application.rb档案:

...
module EmailValidation
  class Application < Rails::Application
    config.autoload_paths << "#{config.root}/lib"
    ...
    ...
    config.active_record.raise_in_transactional_callbacks = true
  end
end

这是public/javascripts/rails.validations.customValidators档案:

clientSideValidations.validators.local["email_format"] = function(element, options){
    if(!/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i.test(element.val())) {
        return options.message;
    }
}

这是lib/email_format_validator.rb档案:

class EmailFormatValidator < ActiveModel::EachValidator
    def validate_each(object, attribute, value)
        value.split(/,\s*/).each do |value|
            unless value =~ /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
                object.errors.add(attribute, :email_format, options)
            end
        end
    end
end

这是Invitation型号:

class Invitation < ActiveRecord::Base
    validates :message, presence: true, length: { minimum: 3 }
    validates :email, presence: true, length: {minimum: 3}
    validates :email, email_format: true
end

0 个答案:

没有答案