2015-11-12 22 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]参​​数更容易访问。