2012-06-20 34 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

回答