我有一個字符串轉換散列成另一種散列紅寶石
navigable_objects = { 'Dashboard' => root_path,
'Timesheets' => timesheets_path,
'Clients' => clients_path,
'Projects' => projects_path,
}
我想將它們轉換成另一種散列結果,其中的關鍵又是關鍵的哈希值,但值是字符串「活躍」或空字符串,具體取決於當前控制器名稱是否包含密鑰。
例如,可以說當前的控制器名稱是「ClientsController」。我應該得到的結果是:
{ 'Dashboard' => '',
'Timesheets' => '',
'Clients' => 'active',
'Projects' => ''
}
這裏如何我目前做的是它:
active = {}
navigable_objects.each do |name, path|
active[name] = (controller.controller_name.include?(name)) ? 'active' : '')
end
我覺得,雖然這工作,有一個更好的辦法,這樣做在Ruby中可能使用inject
或?
我想指出的是,雖然還有其他解決方案(到目前爲止所發佈的所有解決方案都很好),但您原來的方式並沒有什麼特別的錯誤。 – 2012-03-14 01:06:57
我覺得最讓我厭煩的是頂部的哈希聲明,而你的each_with_objects解決方案几乎可以解決這個問題! – link664 2012-03-14 01:12:47