2017-07-12 27 views
0

我想humanized_money_with_symbol方法返回類似USD$ 100,不僅$ 100。另外我想這樣做只有當貨幣符號是$時,我們想讓用戶知道什麼時候$是USD和AUD。

回答

0

從未使用過MoneyRailslooks likehumanized_money_with_symbol只是調用humanized_money合併在symbol: true給你傳入的參數。

然後,那個幫手然後調用format對傳入的貨幣對象,傳遞你指定的選項。在Money寶石,你可以在一個: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 

這應該讓你得到你想要做的。

0

您可以覆蓋USD配置initializers/money.rb顯示「USD」爲標誌的一部分:

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 

重新啓動服務器,你應該看到「USD $ 100」。我不使用多種貨幣,但這應該使您的其他貨幣正常顯示。

1

最後我用內置在MoneyRails的寶石選項disambiguate: true

要使用它,你調用方法象下面這樣:

humanized_money_with_symbol(value, { disambiguate: true }) 

一些例子它是如何工作的here