0

ユーザーにログインするために電子メールとパスワードが正しいかどうかを確認する必要がありますが、1 つのフィールドに対してリモートを呼び出すと、params に他のフィールド値がありません。

資格情報を確認するための私のアクションは次のとおりです。

def checkpass 
 user = User.find_by_email(params[:user][:email])
 logger.debug "User: #{params[:user][:email]}"
 logger.debug "Pass: #{params[:user][:password]}"
 logger.debug "Devise pass:#{user.valid_password?(params[:user][:password])}"
   respond_to do |format|
    if user && user.valid_password?(params[:user][:password])
     format.json { render :json => user }
    end
  end
end

jQuery 検証 (編集):

         'user[password]': {
            required: true,
            minlength: 6,
            remote: {
            url: "http://127.0.0.1:3000/checkpass",
            type: "get",
            data: {
              email: function() { return $("#user_email").val(); }
            }
        }

ログ

      Processing by EditUserController#checkpass as JSON
      Parameters: {"user"=>{"password"=>"[FILTERED]"}, "email"=>"user@mail.com", "pa
       ssword"=>"[FILTERED]"}
      ←[1m←[35mUser Load (0.0ms)←[0m  SELECT "users".* FROM "users" WHERE "users"."e
       mail" IS NULL LIMIT 1
        User:
       Pass: 123456

params[:email] と params[:password] の両方を取得するにはどうすればよいですか?

4

1 に答える 1

0

さて、あなたのフォームの構造によると...

(1)最初に入力するフィールドは、電子メールのフィールドです。

(2) 2 番目に入力するフィールドは、パスワードです。

(3)ユーザーが最初にパスワード フィールドに情報を入力する理由は不明ですが、リモート検証プラグインは、電子メール フィールドが入力されていないか無効であることを検出する必要があります。

このロジックを使用すると、リモート メソッドはパスワード フィールドに入力して電子メールをチェックし、最終的にすべてのログイン データが正しいかどうかを確認できます。

あなたができることは、ここにあります:

jquery リモート検証: リモート データを関数に渡す

于 2012-09-30T07:41:52.767 に答える