如何安排轨道参数排序



当我在提交表单后查看控制台时,我可以看到类似

Parameters: {"authenticity_token"=>"l0dqmb95MydzCWMugWdYt/2bGYyRyDF5ZfOGjrKhjfc=", "project_id"=>"second", "esthour"=>{"nonmodulhours_attributes"=>{"0"=>{"nonmodul_id"=>"61", "nonmodul_est_hours"=>"1"}, "1"=>{"nonmodul_id"=>"62", "nonmodul_est_hours"=>"9"}, "2"=>{"nonmodul_id"=>"63", "nonmodul_est_hours"=>""}}, "modul1hours_attributes"=>{"0"=>{"modul1_est_hours"=>"8", "modul1_id"=>"25"}, "1"=>{"modul1_est_hours"=>"", "modul1_id"=>"26"}**, "2"=>{"modul1_est_hours"=>"88", "modul1_id"=>"27"}}**, "ecommerce_est_hours"=>"", "modulhours_attributes"=>{"0"=>{"modul_est_hours"=>"8", "modul_id"=>"53"}, "1"=>{"modul_est_hours"=>"1", "modul_id"=>"54"}, "2"=>{"modul_est_hours"=>"8", "modul_id"=>"55"}}, "cms_est_hours"=>"", "nonmodul1hours_attributes"=>{"0"=>{"nonmodul1_id"=>"25", "nonmodul1_est_hours"=>"2"}, "1"=>{"nonmodul1_id"=>"26", "nonmodul1_est_hours"=>""}, "2"=>{"nonmodul1_id"=>"27", "nonmodul1_est_hours"=>"5"}}, "rfp_id"=>"35"}, "commit"=>"Add Todo", "utf8"=>"✓"}

在这里我如何排列像线这样的属性

 "2"=>{"modul1_est_hours"=>"88", "modul1_id"=>"27"}}

 "2"=>{ "modul1_id"=>"27","modul1_est_hours"=>"88",}}
*

*modul1_est_hours前modul1_id的意思

form.html.erb**

<% @m1.map(&:id).each do |id|%>
 <%= modul1(id) %>  <%= f.hidden_field :modul1_id, :value => id %>
    <%= f.number_field :modul1_est_hours, :size => 30 %>
         </tr>
<% end %>

编辑

def get_issue_attribute_param1(u)
  u.each do |key, value|
    value.is_a?(Hash) ? get_issue_attribute_param1(value) : update_issue(key,value)
  end
end
def update_issue(q,p)
  if q.include?("_") 
    q1 = q.split("_")
    q0 = q1[0]
    if q1[0].include?("modul")  && q1[1] == "id"
      $id_map = p
      puts $id_map
    end
  end
end

你来了(在 irb 中):

a = {"modul1_est_hours"=>"88", "modul1_id"=>"27"}
 => {"modul1_est_hours"=>"88", "modul1_id"=>"27"} 
Hash[a.sort{|x,y| y.first <=> x.first }]
 => {"modul1_id"=>"27", "modul1_est_hours"=>"88"}

但是,正如每个人都指出的那样。如果你能知道你想做什么,或者你想要什么?然后,也许您正在寻找的内容可能更容易理解和回答。:)

编辑

以下是更新的方法:

def get_issue_attribute_param1(params)
  ids = []
  params["esthour"].select{|hour| hour.include?('modul') }.each_pair do |key, value|
    ids << update_issue(value)
  end unless params["esthour"].nil?
  ids # will have array of array like this: [["61", "62", "63"], ["25", "26", "27"], ["53", "54", "55"], ["25", "26", "27"]] for which you can do: `.flatten`
end
def update_issue(id_with_hours)
  id_with_hours.values.map{|m| m.select{|v| v.include?('id') } }.map(&:values).flatten
end

虽然我不清楚你使用$id_map的目的是什么,因此我不得不把这种情况留给你处理。 :)

我希望它有所帮助。

最新更新