如何获取 rails 中所有国家和城市的列表?

How to get list of all countries and cities in rails?

是否有一个国家和城市gem,用户可以select一个国家,并根据select他将select一个城市select国家/地区?

我有多个解决方案,但它们都支持州而不是城市

gem 'country_select'
gem 'countries'
gem 'carmen-rails'

我想要下拉列表中所有国家/地区的列表,当我 select 任何国家/地区时,该国家/地区的所有城市都会出现在城市下拉列表中。这可能通过任何 gem?

您可以尝试 jQuery 插件 - bootstrap state picker

在您的应用程序中包含插件后

你可以这样使用它(例子来自http://bootstrapformhelpers.com/state):

<select id="countries_states1" class="form-control bfh-countries" data-country="US"></select>

<select class="form-control bfh-states" data-country="countries_states1"></select>

您可以使用 Bootstrap 的国家选择器 jQuery 插件,如下所示:

<select class="form-control bfh-countries" data-country="US"></select>

我的建议是,除非您可以 100% 确定该列表准确且完整(我怀疑这是否可能),不要这样做.

我已经在新加坡和其他地方的网站上进行了注册,在这些网站上,我必须 select 从不包括我所在城镇(和许多其他)的城市下拉列表中选择正确的城镇(我住在美国)。我被迫 select 一个很远的不正确的值,因为列表非常不完整,它不允许我不 select 任何东西。

至少,如果您想提供选择,请允许用户输入未包含在这些选择中的值。

使用恰当命名的 city-state gem


正如 README 所见,您可以:

CS.cities(state, country)

如果您想要给定国家/地区的所有城市,而不考虑州,您可以这样做:

CS.states(country).keys.flat_map { |state| CS.cities(state, country) }

要列出所有国家:

CS.countries

最棒的是它使用了来自 MaxMind 的数据,因此您可以确保该列表是最新的。要刷新您的列表,您可以 运行:

CS.update

唯一的缺点是它需要 rails(特别是主动支持)到 运行,但这对您来说不是问题。