分配与ruby哈希中的键对应的值

时间:2014-04-18 16:54:15

标签: ruby-on-rails-3

在我的网址中,我将参数传递给rails控制器。 因此控制器中的参数将是

params={
  "key1"=>"business", "value1"=>"shoes",
  "key2"=>"date","value2"=>"2014",
  "key3"=>"price", "value3"=>"3000"
}

我需要将相应的键映射到值并将结果存储在hash中。因此输出将是

{"business"=>"shoes", "date"=>"2014", "price"=>"3000"}

我该怎么做。请帮忙。

1 个答案:

答案 0 :(得分:0)

可能有更优雅的方法,但这是我的第一次拍摄。这假设您最初可能具有任何顺序的键/值,但具体名称为keyNvalueN

params={
  "key1"=>"business", "value1"=>"shoes",
  "key2"=>"date","value2"=>"2014",
  "key3"=>"price", "value3"=>"3000"
}

keys = Array.new
values = Array.new

params.each do |k,v|
  m = k.match(/(key|value)(\d+)/)
  eval("#{m[1]}s[#{m[2]}] = '#{v}'") if m
end

hash_values = Hash[keys.zip(values)].delete_if { |k| k.nil? }
# => {"business"=>"shoes", "date"=>"2014", "price"=>"3000"}