在Spree中更改产品价格的货币格式

时间:2013-10-17 14:21:05

标签: ruby-on-rails spree

我正在将spree从spree 1.0升级到1.3并且无法使用新的货币选项。

我希望将价格换算为:'€100',而是获得'€100'。如何在单位和值之间获得空格?

注意:更改区域设置文件不起作用,因为它使用money gem。

4 个答案:

答案 0 :(得分:5)

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

将以下内容放入初始值设定项中:

# 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 

答案 1 :(得分:1)

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

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

这样货币就不会混淆了。

答案 2 :(得分: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: "$"
})

答案 3 :(得分: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中的格式规则挂钩,后者可以控制所有formatting Options of the Money Gem,包括在符号和数字之间放置空格的格式。http://localhost:8080。这比其他解决方案的优点在于它可以同时使用所有货币。