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]
显示两个值password
和password_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之后,它也在那里工作。 确保重新启动应用。 在一个案例中,我不得不重新启动我的实例。 希望这有助于某人。