Ruby on rails 4 ActiveModel::在更新操作中执行生成时禁止属性错误

Ruby on rails 4 ActiveModel::在更新操作中执行生成时禁止属性错误,ruby-on-rails-4,activemodel,Ruby On Rails 4,Activemodel,我得到了一个讨厌的ActiveModel::ForbiddenAttribute错误,我找不到如何修复它 我遵循这个指南: 除我更新记录外,一切都很顺利 我的控制器: if params[:add_item] # rebuild the baixa_itens attributes that doesn't have an id unless params[:baixa][:baixa_itens_attributes].blank? for attribute in param

我得到了一个讨厌的ActiveModel::ForbiddenAttribute错误,我找不到如何修复它

我遵循这个指南: 除我更新记录外,一切都很顺利

我的控制器:

if params[:add_item]
  # rebuild the baixa_itens attributes that doesn't have an id
  unless params[:baixa][:baixa_itens_attributes].blank?
    for attribute in params[:baixa][:baixa_itens_attributes]
      @baixa.baixa_itens.build(attribute.last.except(:_destroy)) unless attribute.last.has_key?(:id)
    end

(...)

    # Never trust parameters from the scary internet, only allow the white list through.
    def baixa_params
      params.require(:baixa).permit(:prontuarios_id, :data, :profissional_id, :comentario, baixa_itens_attributes: [ :id, :item_id, :quantidade, :preco, :_destroy ])
    end
end
当我崩溃时,我在控制台中测试了它:

>> attribute
=> ["1", {"item_id"=>"3", "quantidade"=>"1", "preco"=>"1", "_destroy"=>"0"}]
>> attribute.last.except(:_destroy)
=> {"item_id"=>"3", "quantidade"=>"1", "preco"=>"1"}
>> @baixa.baixa_itens.build(attribute.last.except(:_destroy))
!! #<ActiveModel::ForbiddenAttributesError: ActiveModel::ForbiddenAttributesError>
>属性
=>[“1”、{“项目id”=>“3”、“量化数据”=>“1”、“预编码”=>“1”、“销毁”=>“0”}]
>>attribute.last.except(:_destroy)
=>{item_id=>“3”、“quantidade”=>“1”、“preco”=>“1”}
>>@baixa.baixa_itens.build(属性.last.except(:_destroy))
!! #
但是,如果我尝试手动生成此版本,它会起作用:

>> @baixa.baixa_itens.build({"item_id"=>"3", "quantidade"=>"1", "preco"=>"1"})
=> #<BaixaItem id: nil, baixa_id: 6, item_id: 3, quantidade: 1, preco: #<BigDecimal:7ff97147b6f8,'0.1E1',9(18)>, created_at: nil, updated_at: nil>
>>
>@baixa.baixa_itens.build({“item_id”=>“3”,“quantidade”=>“1”,“preco”=>“1”})
=> #
>>

我遗漏了什么?

我正在解决这个问题

for attribute in params[:baixa][:baixa_itens_attributes].permit!
在我的控制器中(不使用!会给我错误:“未允许的参数:0,1”,我无法理解)

我仍然希望有更好的解决办法