ruby 如何在Rails中通过国家代码获取ISO货币代码?

ff29svar  于 2023-08-04  发布在  Ruby
关注(0)|答案(3)|浏览(155)

在我的rails应用程序中,我想使用country-codecurrency-codeISO locale code从API获取一些数据。当用户从任何地方访问我的网站时,我如何动态地获得这些信息?
我用过geocoder gem,所以通过request.location我可以得到位置信息,使用这个gem我可以得到country-code。现在我没有得到我怎么能得到剩余的信息,如currency-codeISO locale code?有没有人可以帮助我或指导我??
我看过这个**money gem**,但不确定它是否能提供所有这些信息。
提前感谢:)

8dtrkrch

8dtrkrch1#

我试过@Prakash Murthy的答案。但是在这个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

字符串
很抱歉回答我自己的问题,但我已经张贴在这里,所以在未来,如果有人像我一样坚持同样的问题,那么他/她的时间没有浪费。

xxb16uws

xxb16uws2#

我发现了一个简单的方法:
countries gem添加到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"


此信息是基于关闭国家宝石自述文件

h6my8fg2

h6my8fg23#

currency-codeISO locale code是静态数据,很少更改(如果有的话),最好在系统中作为静态信息处理,方法是将它们存储在数据库表中。甚至提供一个CRUD接口来管理这些数据也是一个好主意。
货币代码的一个可能来源:http://www.currency-iso.org/en/home/tables/table-a1.html
List of All Locales and Their Short Codes?提供了有关获取所有区域设置代码列表的详细信息。

相关问题