Ruby on rails 如何安排rails参数的顺序

Ruby on rails 如何安排rails参数的顺序,ruby-on-rails,ruby-on-rails-3,forms,params,Ruby On Rails,Ruby On Rails 3,Forms,Params,当我在提交表单后查看控制台时,我可以看到 Parameters: {"authenticity_token"=>"l0dqmb95MydzCWMugWdYt/2bGYyRyDF5ZfOGjrKhjfc=", "project_id"=>"second", "esthour"=>{"nonmodulhours_attributes"=>{"0"=>{"nonmodul_id"=>"61", "nonmodul_est_hours"=>"1"}, "1"=&

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

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"=>"✓"}
在这里,我如何排列像line这样的属性

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

**模块1预计小时数之前的模块1平均id

form.html.erb**

<% @m1.map(&:id).each do |id|%>
给你(在irb中):

a={“module1\u est\u hours”=>“88”,“module1\u id”=>“27”}
=>{“模块1小时数”=>“88”,“模块1 id”=>“27”}
Hash[a.sort{| x,y | y.first x.first}]
=>{“Module1\u id”=>“27”,“Module1\u est\u hours”=>“88”}
但是,正如大家所指出的那样。如果你能告诉我你想做什么,或者你想用这个做什么?那么也许你要找的东西更容易理解和回答。:)

编辑

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
以下是更新的方法:

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
def get_issue_attribute_param1(params)
ids=[]
params[“esthour”]。选择{hour | hour。包括?('modul')}。每个_对都有|键、值|

ids你为什么要这样做?我想先获取id,因为基于id,我需要进一步更新..获取参数值不依赖于参数顺序你能不能再写一次,这次用英语?@Anish我想不需要了…将参数发送到哪里?到控制器中的另一个方法?或者在将表单提交给Controllery中的另一个方法时使用的方法?您也可以将
params
传递给其他方法,然后从键访问值。为什么要重新安排参数?它将如何帮助?我需要密钥,如果它是id(如本例中所示),那么我想根据接下来的几个小时进行更新,希望您清楚。您可以将这两种控制器方法张贴在您尝试这样做的地方吗?
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
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