PasswordResetsController#update中的ActiveModel :: ForbiddenAttributesError

use*_*129 7 ruby-on-rails

我见过Ryan railcasts第274集我正在使用rails 4并遇到一个问题.

在password_resets_controller.rb中

elsif @user.update_attributes(params[:user])
Run Code Online (Sandbox Code Playgroud)

在控制台中显示

ActiveModel::ForbiddenAttributesError in PasswordResetsController#update
Run Code Online (Sandbox Code Playgroud)

当我修改update_attributes,以update_attribute它显示

wrong number of arguments (1 for 2)
Run Code Online (Sandbox Code Playgroud)

params[:user]显示两个值password,password_confirmation但我password在我的登录页面中使用

我不知道如何解决这个问题.

San*_*osh 30

这是因为Rails 4中的强参数功能.当禁用属性用于质量分配时,将引发此功能.

您必须允许控制器中的属性.像这样

@user.update_attributes(params.require(:user).permit(:password, :password_confirmation))
Run Code Online (Sandbox Code Playgroud)

  • @ user2567129这是一个正确的答案,把绿色放在上面! (7认同)