다른 해시에 해시를 변환 나는 문자열루비
내가 키가 다시 키 또 다른 해시로 변환 할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
나는이 작동하는 동안, 아마도 사용하여, 루비이 할 수있는 더 좋은 방법이 있다고 생각 inject
또는 each_with_objects
?
나는 다른 솔루션 (게시 된 모든 것들은 지금까지 훌륭함)이 있지만, 원래 당신이 그랬던 것처럼 특별히 잘못된 것은 없음을 지적하고 싶습니다. –
나는 나를 가장 괴롭히는 것은 맨 위에있는 해쉬 선언이고, 여러분의 each_with_objects 솔루션은 그것을 거의 해결한다고 생각합니다! – link664