Rails中的货币转换

时间:2016-07-26 23:39:58

标签: ruby-on-rails ruby currency

我有一个多语言的电子商务网站。

我正在使用I18n API处理多语言翻译;像这样:

def set_locale
    I18n.locale = session[:locale]
end

这对于静态文本非常有用,所以我可以使用不同的词典来分隔文本。

然而,这是一个电子商务;所以需要价格变量。

我正在尝试使用墨西哥比索和美元

价格存储在数据库中的MXN中。

我在数据库中也有一个选项,其中包含mxn_to_usd值。

所以1美元= 18 MXN。

现在,要显示价格;我这样做:

number_to_currency(disc.price, :unit => "$")

但这仅适用于一种货币。

我尝试过的是重写number_to_currency方法;所以当I18n.locale是" EN"它将MXN(存储在DB中的那个)转换为美元。

但还没有成功。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您正在寻找的是使用汇率,我建议您使用money gem https://github.com/RubyMoney/money,然后您可以加载以下汇率:

Money.add_rate("USD", "CAD", 1.24515)
Money.add_rate("CAD", "USD", 0.803115)
Money.us_dollar(100).exchange_to("CAD")  # => Money.new(124, "CAD")
Money.ca_dollar(100).exchange_to("USD")  # => Money.new(80, "USD")

答案 1 :(得分:1)

您可以使用超轻量级concurrency gem,它使用以下方法为您提供基本的转换功能:

Concurrency.convert(100, "USD", "INR")  # would convert 100 dollars to Indian Rupees
Concurrency.conversion_rate("USD", "INR")  # would convert 1 USD to INR