在我的url中,我有一个传递给rails控制器的参数。所以控制器中的参数将是
params={
"key1"=>"business", "value1"=>"shoes",
"key2"=>"date","value2"=>"2014",
"key3"=>"price", "value3"=>"3000"
}
我需要将相应的键映射到值,并将结果存储在哈希中。所以输出将是
{"business"=>"shoes", "date"=>"2014", "price"=>"3000"}
我该怎么做。请帮忙。
可能有一种更优雅的方法,但这是我的第一次尝试。这假设您最初可能拥有任何顺序的键/值,但具体命名为keyN
和valueN
。
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"}