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