如何在Rails(Devise gem)中查看当前密码?

MID*_*MID 4 ruby-on-rails jquery-validate actioncontroller devise

我没有使用jQuery验证检查当前密码.我正在使用Devise gem和jQuery验证.萤火虫说:

问题出在我的控制器中:

def checkpass
 user = User.find_by_email(params[:user][:email])
 respond_to do |format|
 if user && user.authenticate(params[:user][:password])
    format.json { render :json => @user }
 end
Run Code Online (Sandbox Code Playgroud)

结束

使用此代码,Firebug给了我错误

 406 Not Acceptable

end
Run Code Online (Sandbox Code Playgroud)

checkemail唯一性动作的例子:

 def checkemail
  @user = User.find_by_email(params[:user][:email])
   respond_to do |format|
   format.json { render :json => !@user }
  end
end
Run Code Online (Sandbox Code Playgroud)

我的js:

$("#edit_password").validate({
   "user[current_password]":{
            required: true,
            minlength: 6,
            remote: {
          url: "http://127.0.0.1:3000/checkpass"
          }
 ...
 })
Run Code Online (Sandbox Code Playgroud)

和HTML:

   <input type="password" size="30" name="user[current_password]" id="user_current_password" class="valid">
Run Code Online (Sandbox Code Playgroud)

有人可以建议怎么做吗?

小智 7

我正在使用rails版本4,当我尝试使用user.authenticate时,我收到错误说未知方法,所以我找到了另一种方法来检查密码是否有效,

valid_password?(current_password)

我想分享它,所以它也可以帮助别人.


Aay*_*wal 5

在控制器中的check_pass函数中

  user = User.find_by_email(params[:user][:email])
  respond_to do |format|
     if user && user.authenticate(params[:user][:password])
        format.json { render :json => @user }
     end
  end
Run Code Online (Sandbox Code Playgroud)