PasswordResetsController#update中的ActiveModel :: ForbiddenAttributesError

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

在password_resets_controller.rb中

elsif @user.update_attributes(params[:user]) 

在控制台中显示

 ActiveModel::ForbiddenAttributesError in PasswordResetsController#update 

当我将update_attribute修改为update_attribute它会显示出来

 wrong number of arguments (1 for 2) 

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

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

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

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

 @user.update_attributes(params.require(:user).permit(:password, :password_confirmation)) 

有相同的问题 – 尝试从Active Admin中对我的任何资源进行任何更改时收到相同的错误消息。 强大的参数在模型的控制器中正确列入白名单,但直到查看文档后我才意识到我需要将模型属性包含在app / admin / your_model.rb中的模型中列入白名单。 一旦我这样做,所有工作都在Active Admin中正常工作。

应用程序/管理/ your_model.rb

 ActiveAdmin.register Your_model do permit_params :attribute_1, :attribute_2, :attribute_3, :etc, :etc end 

这适用于我的本地服务器。 在将更改推送到git并部署到VPS之后,它也在那里工作。 确保重新启动应用。 在一个案例中,我不得不重新启动我的实例。 希望这有助于某人。