Ruby - 解析城市的位置列表,然后获取城市列表并解析每个城市的位置

时间:2016-03-17 22:20:27

标签: ruby-on-rails arrays ruby hash

我目前正在尝试为我的营业地点创建目录页面。我可以很容易地列出所有位置,但更愿意列出位置的状态,然后在下面列出该州的位置城市。然后最后在州下面列出位置名称。

我目前正在使用下面一行的所有地点。

@locations = @brand.locations.all

然后我为州和城市创建了两个空白数组。

@states = []
@cities = []

一旦我创建了数组,我想迭代这些位置,将状态和城市附加到适当的数组。

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

如何将地点附加到城市阵列中相应的城市?我正在考虑在@cities数组中使用哈希,但是从那里开始就被卡住了。对不起,如果这似乎是一个基本问题。

1 个答案:

答案 0 :(得分: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 ... ]
  }
}