我正在使用Ruby on Rails来创建我的登录表单,在尝试登录或创建新帐户时,我收到此客户端错误,导致我无法对表单进行POST。
这是我用来生成表单View的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="">
为什么我的有效电子邮件导致此验证触发?有什么建议吗?
答案 0 :(得分:2)
默认情况下,设计有一个复杂的正则表达式来验证电子邮件。 我建议你简化这个正则表达式。为什么? http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/
可以通过添加到config/initializiers/devise.rb
以下行来完成:
config.email_regexp = /.+@.+/
就是这样。
答案 1 :(得分:1)
您可以取出“表单控件”验证,看看是否有帮助。使用regexp验证电子邮件地址非常复杂,显然您不关心他们是否输入有效的电子邮件地址,因为电子邮件字段是可选的。我将表单控件部分拿出来并假设用户输入正确或者以其他方式验证他们的电子邮件(例如回复电子邮件)。