2012-06-20 31 views
4

标题有点混乱,所以我会解释。 我有以下控制器方法:如何绕过辞职和更新

def password_update 
     @op = params[:old_password] 
     @np = params[:new_password] 
     @cp = params[:confirm_password] 

     if @np == @cp 
     if [email protected]? 
      if current_user.update_with_password(:current_password=> @op) 
       current_user.password = @np 
       if current_user.save 
       flash[:notice] = "Password Successfully Changed" 
       redirect_to settings_path and return 
       end 
      else 
      flash[:notice] = "Incorrent Current Password" 
      redirect_to change_password_path and return 
      end 
     else 
      flash[:notice] = "New Password Cannot Be Blank" 
     end 
     elsel 
     flash[:notice] = "Incorrect Password Confirmation" 
     end 
     redirect_to change_password_path 
    end 

其他一切工作得很好,这意味着我有给你带来这种方法并调用它在表单提交的工作路线和意见。但是,当我尝试正确更改密码时出现错误。顺便说一句,我正在使用Devise。当我点击提交时,我会注销并且显示“您必须登录才能完成此操作”。所以我尝试登录,我目前的密码不起作用。它已更改我的密码(我在表格中设置的密码)!它告诉我必须登录(当我尝试更改密码时),但仍然会更改密码。

欢迎任何帮助,但是,我是一个新手,并会非常感谢一个详细的解释。谢谢!

+1

为什么使用自定义操作重置密码?设计已经有一个内置的行动和观点。 – bruno077

+0

我不重置密码,只是改变它。也许这两个是一样的。 Devise允许您在注册编辑部分更改密码,但是,我希望将其分开到新页面。 – Vasseurth

回答