Techioz Blog

Ruby 通貨交換宝石は機能しますか?

概要

これは、解決された以前の質問に基づいています。 Ruby ベースのアプリの販売価格をさまざまな通貨で読み込む必要があります。私は最近、Google API に基づいて価格を変換するために gem google_currency を使用していました。最近のある時点で機能しなくなりましたが、理由はわかりません。さまざまな方法でテストしてみましたが、何が問題なのかわかりません。

私は現在、優れたドキュメントを持つ「exchange」gemを使用しようとしていますが、使用している方法は実行時にビューファイルに何も生成しません。

Exchange gem によると、単純な変換は次のようになります。

def exchange4
   puts 10.in(:eur).to(:usd)

end

ただし、HTML ビューには何も読み込まれません。他の実用的な宝石を含む提案は大歓迎です!

現時点では、このコードは成功するように見えますが、アクション コントローラーはコンバージョン レートがわからないと言っています。

def exchange4(goods)
    require 'money'
    require 'money-rails'

   exr = Money.new(1, goods.currency).exchange_to(buyer.currency)
    puts exr
end

アクション コントローラーが示すエラーは次のとおりです。

No conversion rate known for 'GBP' -> 'EUR'

非常に奇妙な..

解決策

RubyMoney 組織には、通貨、お金、為替を扱うための非常に優れたオプションがあります。お金を使っているので、本当に効果があります。 Rails の統合には、money-rails があります。

交換例:

eu_central_bank gem (お金と互換性あり) を使用して、すべての為替レートを抽出できます。使用例 (Rails コンソールで):

>> bank = EuCentralBank.new
>> bank.update_rates # if bank.last_updated.blank? || bank.last_updated < 1.day.ago
>> Money.default_bank = bank    

それから:

>> Money.new(1, 'GBP').exchange_to('EUR')
=> #<Money fractional:1 currency:EUR>