如何列出所有大陆与国家的宝石?



使用国家宝石https://github.com/hexorx/countries

方法:

ISO3166::Country.find_all_countries_by_continent('Europe')

我们还有:ISO3166::Country.countries

但是我们没有:ISO3166::Country.continents

我想有一个'Filter by continent'select,它可以用I18n翻译。

是否有一种简单的方法可以获得所有可用的大陆?

据我所知(我可能是错的),我认为hexorx/countries没有给你这种可能性。

Ps:我已经为此创建了一个功能请求,如果它能使事情发生。

您可以使用

获取所有大陆
ISO3166::Data.cache.map {|_,v| v['continent']}.uniq
#=> ["Asia", "North America", "Africa", "Europe", "South America", "Antarctica", "Australia"]

由于这个列表在可预见的将来不太可能改变,你可以把这些结果缓存到你自己。

ISO3166::CONTINENTS = ISO3166::Data.cache.map {|_,v| v['continent']}.uniq.sort

那么你可以在任何你需要的地方重用常量ISO3166::CONTINENTS

也就是说,i18n_data宝石(用于翻译国家)似乎不提供大陆名称的翻译,所以这可能落在你的肩膀上。

一个Set可能也会使这个更有效:(尽管获得大陆只是简单的Array遍历和Hash查找,它已经相当快了)

ISO3166::CONTINENTS = ISO3166::Data.cache.each_with_object(Set.new)  do |(_,v),s| 
s.add(v['continent'])
end.sort

相关内容

  • 没有找到相关文章

最新更新