我试图从JavaScript发布nested_attributes params,比如
参数:{“product”=> {“answers_attributes”=> {“1”=> {“contents”=>“春天”, “questionnaire_id”=>“8”},“3”=> {“questionnaire_id”=>“10”, “contents”=> {“0”=>“PC”},“etc”=>“”},“0”=> {“contents”=>“Aa”, “questionnaire_id”=>“7”},“2”=> {“questionnaire_id”=>“9”, “contents”=>“Ski”}},“sub”=>“0”,“lang”=>“en”},“auth_token”=>“xxxxx”}
但在这种情况下,'answers_attributes'的顺序是1,3,0,2。 在rails3中,将按此顺序创建答案记录。 我想在服务器端(rails)中将answers_attributes参数从1,3,0,2排序到0,1,2,3。
我知道parms [“product”] [“answers_attributes”] .sort可以对顺序进行排序,但params不会更改。 如何通过排序的answers_attributes重建params?
提前致谢。
答案 0 :(得分:1)
非常简单,
假设您的params
是
params = {"product"=>{"answers_attributes"=>{
"1"=>{"contents"=>"Spring", "questionnaire_id"=>"8"},
"3"=>{"questionnaire_id"=>"10", "contents"=>{"0"=>"PC"}, "etc"=>""} ,
"0"=>{"contents"=>"Aa", "questionnaire_id"=>"7"},
"2"=>{"questionnaire_id"=>"9", "contents"=>"Ski"}}, "sub"=>"0", "lang"=>"en"} ,
"auth_token"=>"xxxxx"}
然后就这样做
params['product']['answers_attributes'].sort
params[:product][:answers_attributes] = Hash[*params[:product][:answers_attributes].sort.flatten]