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

当我尝试从表单接受嵌套属性时Unpermitted parameters: latitude, longitude, address我收到了一个Unpermitted parameters: latitude, longitude, address日志中的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" } 

小部件具有多个位置,并且位置belongs_to小部件。 params是在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