如何在rails中按国家/地区代码获取ISO货币代码?

时间:2015-01-09 06:39:53

标签: ruby-on-rails ruby locale currency country-codes

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

我已使用geocoder gem所以request.location我将获得位置信息并使用此gem我可以获得country-code。现在我无法获得如何获得currency-code& ISO locale code?有谁可以帮助我或指导我?

我已经看到了 money gem ,但不确定它是否会向我提供所有这些信息。

提前致谢:)

3 个答案:

答案 0 :(得分:7)

我试过@Prakash Murthy's回答。但是这里有很多问题http://www.currency-iso.org/dam/downloads/table_a1.xml我发现所有国家都没有正确的名称,有些国家有多个currency_code这让我感到困惑。但最后我通过这个单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

很抱歉回答我自己的问题,但是我已经发布在这里,所以将来如果有人因为同样的问题而像我一样,那么他/她的时间不会浪费。

答案 1 :(得分:1)

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?包含有关获取所有区域设置代码列表的详细信息。

答案 2 :(得分:0)

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

currency宝石添加到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自述文件