2016-03-17 2 views
1

В настоящее время я пытаюсь создать страницу каталога для своих предприятий. Я могу просто просто перечислить все местоположения, но гораздо лучше перечислять состояния местоположений, а затем под списком городов местоположения в этом состоянии. Затем, наконец, под государством, укажите имена мест.Ruby - проанализируйте список местоположений городов, затем возьмите этот список городов и проанализируйте места каждого из них

В настоящее время я получаю все местоположения с приведенной ниже строкой.

@locations = @brand.locations.all 

Затем я создаю два пустых массива для штатов и городов.

@states = [] 
@cities = [] 

После того, как я создал массивы, которые я хочу, чтобы перебирать места, чтобы добавить государства и города в соответствующие массивы.

@locations.each do |location| 
    @states << location.state 
    @cities << location.city 
end 

Как я могу добавить местоположения в соответствующие города в массиве города? Я рассматривал возможность использования хэша в массиве @cities, но застрял оттуда. Извините, если это похоже на основной вопрос.

ответ

2

Посмотрите #group_by и #map:

Hash[@locations.all.group_by(&:state).map{|k,v| [k, v.group_by(&:city)]}]

Это создает что-то вроде:

{ 
    "NY": { 
    "Schenectady": [ ... locations in schenectady new york ... ], 
    "Manhattan": [ ... locations in manhattan new york ...] 
    }, 
    "TX": { 
    "Austin": [ ... locations in austin texas ... ] 
    } 
} 
+1

был занят написанием подчиненного ответа – toddmetheny

Смежные вопросы