Rails ActiveModel::ForbiddenAttributesError编辑多条记录



我跟随Railscast第165集(修订版)学习如何在一个表单中编辑和更新多个记录。但当我提交表单同时编辑多个记录时,我得到:

ActiveModel::ForbiddenAttributesError

对于这条线路:

product.update_attributes(params[:product].reject { |k,v| v.blank? })

参数:

参数:

{"utf8"=>"✓",
 "_method"=>"put",
 "authenticity_token"=>"g5C2siF5GcWfPxhph4utWn8JBs2JXEpIUBDO6OlFyQQ=",
 "product_ids"=>["11142",
 "11143"],
 "product"=>{"user_id"=>"",
 "allow_multi_users"=>"true",
 "state_id"=>"",
 "site"=>"",
 "department"=>"",
 "room"=>"",
 "asset_type_id"=>"",
 "asset_model_id"=>"",
 "sync_with_jss"=>"",
 "carrier_id"=>"",
 "mobile_contract_req_date"=>"",
 "mobile_contract_end_date"=>"",
 "mobile_international_plan"=>"",
 "mobile_tethering"=>"",
 "mobile_account"=>""},
 "commit"=>"Update"}`

通常,我认为这是因为我不允许在强参数中使用属性。但这不是一个属性,而是包含所有值的表单的参数。

这是针对我的Products.rb模型的,所以它不应该已经接受params[:product]吗?

products_controller.rb

private  
  def product_params
    params.require(:product).permit(:mobile_account, :mobile_international_plan, :mobile_tethering, :mobile_contract_end_date.. )
  end

使用Rails 4.0.0

试试这个

def update
  ...
  product.update_attributes(product_params)
  ...
end
private
  def product_params
    params.require(:product).permit(:mobile_account, :mobile_international_plan, :mobile_tethering, :mobile_contract_end_date.. )
  end

字段列表是您希望用户发送以更新或创建的字段。

你可以在这里找到更多信息

错误ActiveModel::ForbiddenAttributes当您尝试用params对象更新模型时,会引发错误,该对象的参数不被允许,表单中存在的所有字段都必须被允许更新记录。

相关内容

  • 没有找到相关文章

最新更新