Spree/Solidus: отформатируйте валюту, чтобы показать символ перед ценой с пробелом € 99

Я использую Rails 4 и Solidus 1.2. Как форматировать цену, чтобы иметь символ валюты с пробелом перед числом, например «99 евро»?

Spree/Solidus используют Ruby Money Gem для обработки валют, и я вижу в https://github.com/RubyMoney/money/blob/master/lib/money/money/formatting.rb что есть опция конфигурации

Spree::Money.default_formatting_rules[:symbol_before_without_space] = true 

но нет Spree::Money.default_formatting_rules[:symbol_before_with_space] = true

В моем инициализаторе:

# config/initializers/spree.rb

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

И я также попытался отформатировать в моих файлах локализации, например, в de.yml:

---
de:
  number:
    currency:
      format: "%u %n"

Но формат цены по-прежнему «104,90 €» вместо «104,90 €».

Я не хочу выполнять интерполяцию строк для форматирования валюты. Есть ли параметр конфигурации, который мне не хватает?


person StandardNerd    schedule 31.08.2016    source источник


Ответы (2)


хорошо, это смущает, но я просто должен был установить

Spree::Money.default_formatting_rules[:symbol_before_without_space] = false

чтобы получить желаемый формат.

person StandardNerd    schedule 31.08.2016

Вам нужно будет сделать

Spree::Money.default_formatting_rules[:symbol_position] = :before
person Neeraj Kumar    schedule 20.08.2018