我有一個哈希,其中大部分填充了一個與該關鍵字相關聯的兩個值的關鍵字。在這個哈希中還有另一個哈希,這是我被卡住的地方。通過散列迭代輸出一個無序列表
比方說散的樣子:
{'sports'=>['football', 'basketball'], 'season'=>['summer','fall'], 'data'=>[{'holiday'=>'Christmas', 'genre' => 'Comedy'}, {'holiday'=>'Thanksgiving', 'genre' => 'Action'}]}
輸出應該是這樣的:
Sports
- football
- basketball
Season
- summer
- fall
Holiday
- Christmas
- Thanksgiving
Genre
- Comedy
- Action
到目前爲止,我有一個助手,讓我除了data
部分的一切。
def output_list_from(hash)
return if hash.empty?
content_tag(:ul) do
hash.map do |key, values|
content_tag(:li, key.to_s.humanize) +
content_tag(:ul) do
# if values.is_a?(Hash)...
content_tag(:li, values.first) +
content_tag(:li, values.last)
end
end.join.html_safe
end.html_safe
end
這將返回輸出:
Sports
- football
- basketball
Season
- summer
- fall
Data
- {'holiday'=>'Christmas', 'genre' => 'Comedy'}
- {'holiday'=>'Thanksgiving', 'genre' => 'Action'}
這當然是有道理的......所以我試着在循環來檢查value
是一個Hash,但這樣它的成立欺騙了我。我認爲如果我知道每次散列的樣子會更容易,但每次都會有新的散列。有一次,數據內可能有holiday
,另一次可能有holiday
和genre
。
任何意見,將不勝感激。
總是在'data'哈希值的陣列? – 2014-12-04 17:37:16
'數據'不總是*在散列中。如果'data'存在,那麼是的,它將是一個散列數組。 – 2014-12-04 17:38:23