2014-04-18 67 views
0

在我的url中,我有一個傳遞給rails控制器的參數。 所以在控制器中的PARAMS將在ruby散列中分配對應於鍵值的值

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

我需要映射對應的鍵的值,並存儲在hash.So結果的輸出將

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

我如何做到這一點。請幫忙。

+0

我的答案是否可以接受,還是存在另一個問題? – lurker

回答

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"} 
相關問題