2

我正在使用 Ruby on Rails 制作我的登录表单,在尝试登录或创建新帐户时,我收到此客户端错误,阻止我发布表单。

在此处输入图像描述

这是我用来生成表单视图的 Ruby 代码。

#account-form
  h2 Create your free account!

  p Signing up is completely free and you can use all of our features.

  = simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
    = f.error_notification

    .form-group
      = f.label :email
      = f.input_field :email, class: 'form-control'

    .form-group
      = f.label :password
      = f.input_field :password, required: true, class: 'form-control'

    .form-group
      = f.label :password_confirmation
      = f.input_field :password_confirmation, require: true, class: 'form-control'

    button.btn.btn-default type='submit' Sign up

  = render 'devise/shared/links'

这将生成以下 HTML(用于输入):

<input class="string email optional form-control" 
       id="user_email" 
       maxlength="255" 
       name="user[email]" 
       pattern="\A[^@\s]+@([^@\s]+\.)+[^@\s]+\z" 
       size="255" 
       type="text" value="">

为什么我的有效电子邮件会导致此验证触发?有什么建议么?

4

2 回答 2

2

默认情况下,devise 有一个复杂的正则表达式来验证电子邮件。我建议你简化这个正则表达式。为什么?http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/

可以通过添加到config/initializiers/devise.rb 以下行来完成:

  config.email_regexp = /.+@.+/

而已。

于 2013-11-03T21:38:33.513 回答
1

您可以取出“表单控件”验证,看看是否有帮助。使用正则表达式验证电子邮件地址非常复杂,显然您并不关心他们是否输入了有效的电子邮件地址,因为电子邮件字段是可选的。我会去掉表单控制部分,假设用户输入良好,或者让他们以另一种方式验证他们的电子邮件(比如回复电子邮件)。

于 2013-11-03T21:06:12.300 回答