我正在尝试构建自定义重置密码功能。 我的观点中有一个表格
init=
然后在我的控制器上,我试图更改密码和password_confirmation字段。
<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>
似乎密码正在改变,但是当我尝试登录时,我不能!
答案 0 :(得分:0)
您似乎直接在params中引用已发布的参数,而不是通过允许其提交的强参数引用。
例如,控制器中的强参数定义应该类似于
def user_params
params.require(:user).permit(:password, :password_confirmation)
end
然后使用user_params[:password]
等参考参数,而不是直接使用params。
这具有双重效果,即只接受列入白名单的参数,并且更容易访问用户[密码]和用户[password_confirmation]参数。