如何通过 rails 中的国家代码获取 ISO 货币代码?

How to get ISO currency code by country code in rails?

在我的 rails 应用程序中,我想使用 country-codecurrency-codeISO locale code 从 API 获取一些数据。当用户从任何地方访问我的网站时,我如何动态获取这些信息?

我已经使用了 geocoder gem,所以通过 request.location 我可以得到位置信息,使用这个 gem 我可以得到 country-code。现在我不知道如何获取 currency-code & ISO locale code 等剩余信息?任何人都可以帮助我或指导我吗?

我看过这个 money gem 但不确定它是否会为我提供所有这些信息。

提前致谢:)

currency-code & ISO locale code 是很少改变的静态数据 - 如果有的话,最好通过将它们存储在数据库表中作为系统内的静态信息进行处理。提供用于管理这些数据的 CRUD 接口甚至可能是个好主意。

货币代码的一个可能来源:http://www.currency-iso.org/en/home/tables/table-a1.html

List of All Locales and Their Short Codes? 包含有关获取所有区域设置代码列表的详细信息。

我试过 answer. But there are many issue in this http://www.currency-iso.org/dam/downloads/table_a1.xml I found there is not proper name of all countries and some country has multiple currency_code which made me confused. But finally I found the solution by this single countries gem 没有创建任何数据库。

以下是我实现解决方案的方法:

country_name = request.location.data['country_name'] # got country name
c = Country.find_country_by_name(country_name) # got currency details
currency_code = c.currency['code'] # got currency code

很抱歉回答我自己的问题,但我已经在这里发帖了,所以以后如果有人像我一样遇到同样的问题,那么 his/her 时间就不会浪费了。

我找到了一种非常简单的方法:

添加currencygem到Gemfile,然后bundle install

def currency_for_country(currency_iso_code)

  ISO3166::Country.new(currency_iso_code).currency_code

end

然后:

currency_for_country('US')
=> "USD"

currency_for_country('AU')
=> "AUD"

此信息基于 countries gem 自述文件