如何允许嵌套属性的强参数?

How to permit strong params for nested attributes?

当我尝试接受来自表单的嵌套属性时,我在日志中收到 Unpermitted parameters: latitude, longitude, address 错误。确切的参数看起来像:

{  
  "widget"=> {
    "owner"=>"100", 
    "name"=>"Widget Co", 
    "locations_attributes" => {
      "0"=> {
        "latitude"=>"51.4794259", 
        "longitude"=>"-0.1026201", 
        "address"=>"123 Fake Street"
      }
    }
  },
  "commit"=>"Create Supplier", 
  "action"=>"create", 
  "controller"=>"widgets"
}

一个小部件 has_many 个位置,一个位置 belongs_to 个小部件。参数设置在 widgets_controller 中,我认为它会允许“0”以下的所有内容,但似乎不是?

def widget_params
  params.require(:widget).permit(:owner, :name, locations_attributes: [{"0" => []}])
end

有没有更好的方法来接受这些参数?

谢谢

试试这个

def widget_params
  params.require(:widget).permit(:owner, :name, locations_attributes: [:id, :latitude, :longitude, :address])
end

您的 widgets_params 代码应该是:

def widget_params
  params.require(:widget).permit(:owner, :name, locations_attributes: [:latitude, :longitude, :address])
end