2

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="">

有効な電子メールが原因でこの検証がトリガーされるのはなぜですか? 助言がありますか?

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 に答える