2013-01-18 131 views
2

請看下面的哈希:獲取嵌套哈希鍵/值對

params[:category] #=> {"category"=>{"name"=>"name1", "parent_id"=>1, "category"=>{"name"=>"name2"}}} 

和所需的輸出:

params[:category] #=> {"category"=>{"name"=>"name1", "parent_id"=>1 }} 

我已經試過幾件事情,但沒有成功

params[:category].delete(params[:category][...] 

如何獲取此嵌套散列的鍵/值對以刪除它?

感謝您的幫助

+0

類別是否嵌套在類別中? – apneadiving

+0

嗨apneadiving,是類別嵌套在類別中。我知道在哈希中有幾個相同的密鑰並不是一個好習慣,但我在這裏沒有選擇。 – benoitr

+0

爲什麼你沒有選擇?你不是在控制生成散列的源代碼嗎? –

回答

4

如果哈希是:

params[:category] = {"category"=>{"name"=>"name1", "parent_id"=>1, "category"=>{"name"=>"name2"}}} 

然後使用:

params[:category]['category'].delete('category') 
params[:category] 
=> {"category"=>{"name"=>"name1", "parent_id"=>1}} 
0
h = {"category"=>{"name"=>"name1", "parent_id"=>1, "category"=>{"name"=>"name2"}}} 
h['category'].delete('category') 
{"category"=>{"name"=>"name1", "parent_id"=>1}} 

第三行的結果。您是否想要刪除category密鑰h['category']

0

如果哈希是:

params[:category] = {"category"=>{"name"=>"name1", "parent_id"=>1, "category"=>{"name"=>"name2"}}} 

然後使用:

params[:category]["category"].slice!("category")