如何使用humanized_money_with_symbol方法显示货币?比如100美元

时间:2017-07-12 09:40:07

标签: ruby-on-rails money-rails

我希望humanized_money_with_symbol方法返回USD$ 100之类的内容,而不仅仅是$ 100。此外,我只想在货币符号为$时才这样做,我们希望在$为美元和澳元时让用户知道。

3 个答案:

答案 0 :(得分:1)

最后我在MoneyRails gem选项disambiguate: true中使用了内置函数。

要使用它,请调用以下方法:

humanized_money_with_symbol(value, { disambiguate: true })

一些示例如何运作here

答案 1 :(得分:0)

从未使用MoneyRails,但looks like humanized_money_with_symbol只需将humanized_money合并到您传递给它的参数中symbol: true

然后,助手会在传入的货币对象上调用format,传入您指定的选项。在Money gem中,您可以传递:symbol来渲染货币,例如

m = Money.new('123', :gbp) # => #<Money fractional:123 currency:GBP>
m.format( symbol: m.currency.to_s + ' ') # => "GBP 1.23"

所以,如果你打电话

humanized_money(Money.new('123', :usd), symbol: 'USD $')
# => "USD $1.23"

然后,您可以在应用程序中设置一个帮助方法,以避免总是必须传递该符号,例如:

def render_custom_currency(value, options = {})
  value.currency.iso_code == "USD" ? humanized_money(value, options.merge(symbol: 'USD $')) : humanized_money(value, options.merge(symbol: true))
end

这应该可以让你得到你想做的事。

答案 2 :(得分:0)

您可以覆盖initializers/money.rb中的USD配置以显示&#34; USD&#34;作为符号的一部分:

MoneyRails.configure do |config|
  config.register_currency = {
    "priority": 2,
    "iso_code": "USD",
    "name": "United States Dollar",
    "symbol": "USD $",
    "subunit": "Cent",
    "subunit_to_unit": 100,
    "symbol_first": true,
    "decimal_mark": ".",
    "thousands_separator": ",",
  }
end

重新启动服务器,您应该看到&#34; 100美元和34美元。我不使用多种货币,但这应该让您的其他货币正常显示。