如何修复rails中的ActiveModel :: ForbiddenAttributesError

时间:2013-07-23 17:34:40

标签: ruby-on-rails ruby activeadmin ruby-on-rails-4

我的应用程序正在构建用途,Activeadmin用于后端界面。

我目前使用它来方便生产,让我的客户在产品等后端添加简单的东西。

我已经设置了使用rails 4和activeadmin rails 4兼容版本。

当我在后端添加新乐队时,我收到此错误:

ActiveModel::ForbiddenAttributesError in Admin::BandsController#create
ActiveModel::ForbiddenAttributesError

Request

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"YnzHk2juyZ6W2kVS5ZVPCimoj7LSHRI1Oen4BHjaqfc=",
 "bands"=>{"title"=>"Kings of Leon",
 "picture"=>"blank"},
 "commit"=>"Create Bands"}

我知道这与在后端创建新项目有关,但我不确定从哪里开始修复此错误。

任何帮助都会很棒,

由于

2 个答案:

答案 0 :(得分:10)

只需将以下行添加到您的app / admin / brand.rb

即可
permit_params :title, :picture

然后重新启动服务器。

答案 1 :(得分:3)

我刚刚遇到了这个错误,而且我已经找到了解决问题的方法。

解决方案澄清控制器中params的 许可 语法,这是Rails 4中的新功能,非常简单犯错误。

例如,这些代码将接受错误(将permit应用于参数,然后使用原始参数):

params.require(:seller).permit(:company, :phone)
@seller.update_attributes(params[seller])

要解决此问题,请将其替换为:

@seller.update_attributes(params.require(:seller).permit(:company, :phone))

...或重复使用允许的参数(推荐的解决方案)

new_attributes = params.require(:seller).permit(:company, :phone)
@seller.update_attributes(new_attributes)

希望它可以帮助你。