2015-11-12 148 views
0

我正在嘗試構建自定義重置密碼功能。 我有一個表單上我的看法在設計用戶上更改密碼

<div class="form-group"> 
    <%= f.label :password %> 
    <%= f.password_field :password, autofocus: true, title:"Enter your email", name:"password", id:"password", class:"form-control" %> 
     <span class="help-block small">Password</span> 
    </div> 
    <div class="form-group"> 
     <%= f.label :password_confirmation %> 
     <%= f.password_field :password_confirmation, autofocus: true, title:"Enter your email", name:"password_confirmation", id:"password_confirmation", class:"form-control" %> 
     <span class="help-block small">Confirm Password</span> 
     </div> 
    <div class="actions"><%= f.submit "Update Password", class:"btn btn-success btn-block" %></div> 

然後我控制器上我試圖更改密碼和password_confirmation領域。

@user.update_attributes({:password => params[:password], :password_confirmation => params[:password_confirmation]}) 

它似乎密碼正在改變,但當我試圖登錄我不能!

+0

請發佈完整的erb代碼片段,包括<%= form_for標記 – Phil

回答

0

您似乎在params中直接引用張貼的參數,而不是通過允許其提交的強參數引用。

例如,在你的控制器強參數的定義也許應該是這樣的

def user_params 
    params.require(:user).permit(:password, :password_confirmation) 
end 

然後參考的參數與user_params[:password],等等,而不是直接PARAMS。

這具有雙重效果,即只接受白名單參數,並且用戶[密碼]和用戶[password_confirmation]參​​數更容易訪問。