2017-05-08 28 views
0

我想通過傳入的json進行迭代,並且一旦我完成了這個操作就是結果對象。使用'next'方法在Ruby中的.each循環中跳過項目

{ 
    "stairs"=>1, 
    "walls"=>4, 
    "blinds"=>4, 
    "oven"=>1, 
    "kitchen"=>1, 
    "bedroom"=>3, 
    "bathroom"=>2, 
    "additional_services"=>[ 
    #<Hashie::Mash additional_service="stairs" count=1>, 
    #<Hashie::Mash additional_service="walls" count=4>, 
    #<Hashie::Mash additional_service="blinds" count=4>, 
    #<Hashie::Mash additional_service="oven" count=1> 
    ] 
} 

我不想把「additional_services」部分包含在這個json中。我試圖使用下一個方法從迭代中跳過它,但它不工作。

task_details = params['cleaning_task']['task_details'] 
task_details_hash = Hash.new 
task_details.each do |k,v| 
    next if task_details['additional_services'] 
    key = k 
    value = v 
    task_details_hash[key] = value  
end 
puts task_details_hash 

我在做什麼錯?

+3

格式的代碼。正確的格式/縮進是非常重要的。不瞭解你,但是我發現很難理解這個簡單的代碼,因爲壓縮不完整。如果代碼更大,您可以輕鬆地花費數小時的時間,試圖找到一個簡單的問題,否則將會很明顯。 –

+2

@SergioTulentsev正是。我的第一個想法是:等待,必須有一個SyntaxError的地方。 –

回答

4

還有一種更好的方式,已經內置(導軌)。

task_details_hash = task_details.except('additional_services') 

但是,乍一看,你的代碼應該做的工作太多,如果你修改你的支票略有

# next if task_details['additional_services'] 
next if k == 'additional_services' 
相關問題