5

我正在将 spree 从 spree 1.0 升级到 1.3,并被新的货币选项卡住了。

我想将价格呈现为:“100 欧元”,但得到“100 欧元”。如何在单位和值之间获得空格?

注意:更改语言环境文件不起作用,因为它使用金钱 gem。

4

4 回答 4

6

有很多方法可以做到这一点。最简单的可能是用不同的符号重新注册欧元货币。

将以下内容放入初始化程序中:

# encoding: utf-8
Money::Currency.register({
    :priority        => 1,
    :iso_code        => "EUR",
    :iso_numeric     => "978",
    :name            => "Euro",
    :symbol          => "€ ",
    :subunit         => "Cent",
    :subunit_to_unit => 100,
    :separator       => ".",
    :delimiter       => "," 
})

Rails 控制台现在报告:

> Spree::Money.new(100, currency: 'EUR')
=> € 100.00 
于 2013-10-17T15:47:48.983 回答
1

我在我的中做了以下config/initializers/spree.rb注入不同的符号:

Money::Currency.table[:chf].merge!(symbol: 'CHF ')

这样货币就不会混淆。

于 2014-08-28T09:18:32.807 回答
0

非常感谢。就我而言,使用以下内容更改 to_html 方法生成的符号,以防万一有人遇到同样的问题。

# encoding: utf-8
Money::Currency.register({
    :priority        => 1,
    :iso_code        => "CLP",
    :iso_numeric     => "152",
    :name            => "Chilean Peso",
    :symbol          => "$",
    :subunit         => "Peso",
    :subunit_to_unit => 1,
    :separator       => ",",
    :delimiter       => ".",
    html_entity: "$"
})
于 2013-11-29T15:18:10.490 回答
0

我在初始化程序中解决了以下问题,例如config/initializers/currency_formatting.rb

# Display prices with a space between symbol and number:
Spree::Money.default_formatting_rules[:symbol_before_without_space] = false

这与 中的格式化规则挂钩Spree::Money,它可以控制Money Gem 的所有格式化选项,包括在符号和数字之间放置空格的选项。与此处介绍的其他解决方案相比,它具有同时适用于所有货币的优势。

于 2016-08-17T14:11:29.727 回答