【问题标题】:How can I fix a ActiveModel::ForbiddenAttributesError in rails如何修复 Rails 中的 ActiveModel::ForbiddenAttributesError
【发布时间】:2013-07-23 17:34:40
【问题描述】:

我正在构建的应用程序使用 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"}

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

任何帮助都会很棒,

谢谢

【问题讨论】:

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


【解决方案1】:

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

permit_params :title, :picture

然后重启你的服务器。

【讨论】:

  • 需要注意的是,安装 ActiveAdmin 后,Inherited Resources gem 将接管为任何命令行脚手架创建控制器。如果运行 Rails 4 或 Strong Parameters gem,还需要将 allowed_pa​​rams 添加到这些控制器中。引用:github.com/josevalim/inherited_resources#strong-parameters
【解决方案2】:

我刚刚遇到了这个错误,我已经找到了修复它的方法。

解决方案:阐明控制器中参数的permit语法,这是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)

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2017-03-17
    • 2013-11-20
    • 1970-01-01
    相关资源
    最近更新 更多