抓取嵌套参数

Grabbing nested parameter

上下文 对于自行车订购系统,用户可以先填写 bike_type(例如 'mountainbike'),然后选择自行车(例如 'yellow mountainbike')。

当用户输入 bike_type 但忘记了自行车时,需要重新呈现表单以便用户填写丢失的自行车。

问题 自行车订单架构有

-->所以当用户第一次填写一个bike_type时,这个bike_type需要自行车接单

如何在我的创建控制器中获取 bike_type,因此它会自动呈现最后填写的 bike_type,以防表单需要重新呈现而不是填写正确?

已发送参数

{"utf8"=>"✓",
 "authenticity_token"=>"NqEb3EhNDOYFI12tYLCp9akDtVnEbiA4skR5qmVygwnRv+GkELvDTEJhU8/o5Orvmsiaxk7PIPbawD9CZvWLYw==",
 "order"=>
  {"order_bikes_attributes"=>{"0"=>{"bikes"=>{"bike_type"=>"166"}, "bike_id"=>"Select bike"}},
   "arrival"=>"",
   "departure"=>"",
   "order_contact_attributes"=>{"first_name"=>"", "last_name"=>"", "street"=>"", "street_number"=>"", "zipcode"=>"", "city"=>"", "country"=>"", "email"=>"", "phone"=>""}},
 "commit"=>"Save & proceed to additional options",
 "bike_store_id"=>"21"}

您可以像这样从参数中获取 bike_type:

params[:order][:order_bikes_attributes]['0'][:bikes][:bike_type]

我建议您使用 dig 方法来避免 nil 错误。

params.dig('order', 'order_bikes_attributes', '0', 'bikes', 'bike_type')