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

时间:2015-06-16 15:52:32

标签: ruby-on-rails ruby parameters

当我尝试接受表单中的嵌套属性时,我在日志中收到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

是否有工作/更好的方式接受这些参数?

由于

2 个答案:

答案 0 :(得分:4)

试试这个

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

答案 1 :(得分:1)

您的widgets_params代码应为:

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