Ruby on rails 用于整个站点的Ruby on rails货币切换器

Ruby on rails 用于整个站点的Ruby on rails货币切换器,ruby-on-rails,ruby,currency,money-rails,Ruby On Rails,Ruby,Currency,Money Rails,我已经搜索了几个小时,一个接一个地查看了所有谷歌搜索结果。。。阅读有关RubyMoney、Money Rails的文章。我是rails新手,但我仍然不明白如何为我的整个RubyonRails应用程序获得货币切换器。 在我的档案里 gem 'money-rails' gem 'json' gem 'bigdecimal' 捆 已创建config/initializers/money.rb MoneyRails.configure do |config| config.default_

我已经搜索了几个小时,一个接一个地查看了所有谷歌搜索结果。。。阅读有关RubyMoney、Money Rails的文章。我是rails新手,但我仍然不明白如何为我的整个RubyonRails应用程序获得货币切换器。

  • 在我的档案里

    gem 'money-rails' 
    
    gem 'json'
    
    gem 'bigdecimal'
    
  • 已创建config/initializers/money.rb

    MoneyRails.configure do |config|
      config.default_currency = :eur
    end
    
  • 将该数字格式化为视图中的货币

  • 例如,如何让Airbnb这样的货币选择器通过欧盟银行或谷歌的自动汇率更新来更改网站的所有价格?我无法理解RubyMoney关于这个的文档


  • 这是我的出发点

    1) 添加到文件中:

    gem 'google_currency'
    
    MoneyRails.configure do |config|
      config.default_currency = :eur
    
      # set default bank to instance of GoogleCurrency
      Money::Bank::GoogleCurrency.ttl_in_seconds = 86400
      config.default_bank = Money::Bank::GoogleCurrency.new
    end
    
    2) 添加到config/initializers/money.rb:

    gem 'google_currency'
    
    MoneyRails.configure do |config|
      config.default_currency = :eur
    
      # set default bank to instance of GoogleCurrency
      Money::Bank::GoogleCurrency.ttl_in_seconds = 86400
      config.default_bank = Money::Bank::GoogleCurrency.new
    end
    
    3) 在应用程序布局中的某个位置添加货币选择器,或者在您认为它应该与您感兴趣的所有货币(美元、欧元等)匹配的任何位置添加货币选择器。使用此选择框的
    on change
    javascript事件或按钮触发rails操作,将所选货币保存在会话变量上(从现在起调用它)会话[:currency],并刷新当前页面(如果您在当前页面上显示一些价格-如果您只使用一个按钮,则如果您的响应为js格式,则可以使用
    window.location.reload();
    )。操作如下:

    def save_currency
      session[:currency] = params[:currency]
      respond_to do |format|
        format.html { redirect_to :back }
      end
    end
    
    post '/controller/save_currency', to: 'controller#save_currency'
    
    在您的routes.rb(根据您的需要更换控制器)上,如下所示:

    def save_currency
      session[:currency] = params[:currency]
      respond_to do |format|
        format.html { redirect_to :back }
      end
    end
    
    post '/controller/save_currency', to: 'controller#save_currency'
    
    只是缺少“选择框”和“提交”按钮的表单-请按照您的意愿执行此操作:)

    4) 添加一个helper方法来呈现价格(我假设您的所有价格属性都使用
    money rails
    gem定义为
    monetize
    )。要在站点上显示的所有价格都应使用此方法在视图上呈现。方法看起来像这样(您可以将它放在您的应用程序\u helper.rb上,如果您没有看到其他更适合它的地方):

    这是一个简化版本,您还应该添加一些异常处理,以获取更多关于此的文档

    5) 在所有要打印价格的视图上,使用类似于以下内容的代码(我使用的示例与您相同):

    
    

    希望有帮助

    你谈论的是货币兑换因素,而不仅仅是货币呈现问题。像这样的网站从某处下载汇率,并将其保存在一个表中,用于显示数值时进行转换。谢谢。你知道我应该搜索哪些信息才能开始吗?这只能通过Money Rails完成,还是更复杂?MoneyRails确实提供了通过银行转换汇率的能力,以获得更好的想法。在其他Git中,按照说明操作非常容易,但我不知道应该在哪里添加这些行?在新创建的models/money.rb或config/initializers/money.rb中?然后他们说“商店必须实现以下接口:”-我也不知道如何使用它。只要知道在哪里添加这些,就可以真正解除我对其工作原理的理解障碍。非常感谢Rodrigo,我会尽快尝试@塞巴斯蒂安·奥尔贝克:当然,np!如果答案有帮助,记得标记为正确答案和/或投票:)