12

サインアップフォームに問題があります。SimpleFormで作成、認証はDeviseで行います。フォームを送信するときに、電子メールまたはパスワードが空白の場合、このエラーが 2 回表示されます。ユーザー モデルには、名、姓、プロファイル名、パスワード、および電子メールの存在検証があります。これらの重複エラーは、空白の電子メール フィールドとパスワード フィールドにのみ表示されます。他の空白のフィールドは、一度そう言います。

例:

# エラーにより、このユーザーの保存が禁止されました:

  • 電子メールを空白にすることはできません
  • 電子メールを空白にすることはできません
  • パスワードを空白にすることはできません
  • パスワードを空白にすることはできません

ユーザー.rb:

    class User < ActiveRecord::Base

      devise :database_authenticatable, :registerable,
           :recoverable, :rememberable, :trackable, :validatable

      attr_accessible :email, :password, :password_confirmation, :remember_me, :first_name, :last_name, :profile_name

      validates :first_name, :last_name, :email, :profile_name, :password, presence: true

      validates :profile_name, uniqueness: true,
                               format: {
                                  with: /^[a-zA-Z0-9_-]+$/
                               }
      has_many :posts

      def full_name
        first_name + " " + last_name
      end
    end

registrations/new.html.erb:

  <%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
    <%= devise_error_messages! %>

    <div class="formGroupLeft">
      <%= f.input :first_name, :input_html => { :class => 'formGroupInput'} %>
    </div>
    <div class="formGroupRight">
      <%= f.input :last_name, :input_html => { :class => 'formGroupInput'} %>
    </div>
    <div class="formGroupLeft">
      <%= f.input :email, :input_html => { :class => 'formGroupInput'} %>
    </div>
    <div class="formGroupRight">
      <%= f.input :profile_name, :input_html => { :class => 'formGroupInput'} %>
    </div>
    <div class="formGroupLeft">
      <%= f.input :password, :input_html => { :class => 'formGroupInput'} %>
    </div>
    <div class="formGroupRight">
      <%= f.input :password_confirmation, :input_html => { :class => 'formGroupInput'} %>
    </div>

    <div class="formActions">
      <%= f.button :submit, "Sign Up" %>
    </div>

  <% end %> 

これはなぜでしょうか?どうすれば修正できますか?

4

1 に答える 1

38

電子メール/パスワードの検証を追加するデバイス検証可能なプラグインを指定したようです。

class User
  devise :database_authenticatable, ... :validatable
end

独自の検証を指定しているため、devise validatable プラグインは省略します。

于 2012-12-16T02:00:15.367 に答える