ruby-on-rails - 在 Spree (RoR) 中保存产品时,价格乘以 100

标签 ruby-on-rails ruby-on-rails-3.1 spree

我在 Rails 3.1.3 和 Ruby 1.9.3 之上安装了在线购物框架 Spree。我还使用 Spree_i18n gem 来本地化商店。现在,每当我保存产品时,价格都会乘以 100。

例如,在管理区域,我输入价格 3.20。结果是值 320。如果我再次保存,它会更改为 32000,依此类推。

这是我本地化的 de_numbers.yml 以供引用:

---
de:
  number:
    currency:
      format:
        format: "%u%n"
        unit: "€"
        precision: 2
        separator: '.'
        delimiter: ','

我想不出我的设置有什么不寻常的地方,所以我想知道为什么这不是一个常见问题。任何帮助将不胜感激。

最佳答案

编辑:

spree 核心: Product 表单不处理显示 product.price 和 product.cost_price 与 I18n/本地化有关的信息。为了解决这个问题,你需要修改核心。我将向 Spree Core 团队发布有关此事的消息,但在此期间,我已经测试了此修复程序,它应该可以工作。

/gems/spree_core-1.0.0/app/views/spree/admin/products/_form.html.erb ,您将需要修改这些行:

<%= f.text_field :price, :value => number_with_precision(@product.price, :precision => 2) %>

是这样的:
<%= f.text_field :price, :value => number_with_precision(@product.price, :precision => I18n.t('number.currency.format.precision'), :separator => I18n.t('number.currency.format.separator'), :delimiter => I18n.t('number.currency.format.delimiter')) %>

和这个:
<%= f.text_field :cost_price, :value => number_with_precision(@product.cost_price, :precision => 2) %>

是这样的:
<%= f.text_field :cost_price, :value => number_with_precision(@product.cost_price, :precision => I18n.t('number.currency.format.precision'), :separator => I18n.t('number.currency.format.separator'), :delimiter => I18n.t('number.currency.format.delimiter')) %>

本质上,我们让它处理 I18n 潜在值。

原文:

我已经完全复制了您的文件,并尝试了一些测试来重新创建它(创建新产品、新产品变体、更改产品价格、成本价格等)。要重新创建它,您需要创建一个 de_numbers.yml,并使用“config.default_locale = 'de'”在 Spree 初始值设定项中将您的本地化翻转为 'de'

以下是一些建议的修复方法:
  • 确保你运行 bundle install
  • 在您的 Gemfile 中,确保您使用的是最新版本的 i18n (

  • gem 'spree_i18n', :git => 'git://github.com/spree/spree_i18n.git')


  • 将您的空格固定为 2 个空格,而不是制表符(这是 可能是一个空格问题,它无法读取您的 i18n 值 )
  • 进入 rails 控制台,并注销值(即

  • I18n.t('number.currency.format.unit')


  • 先尝试让它在“en”语言环境中工作,然后在“de”中工作。
  • 首先将您的值放入“de.yml”或“en.yml”中,然后在放入“de_currency.yml”文件之前查看它们是否有效。
  • 关于ruby-on-rails - 在 Spree (RoR) 中保存产品时,价格乘以 100,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9445175/

    相关文章:

    ruby-on-rails - Facebook 认证推荐和 OmniAuth

    ruby-on-rails - Rails RSpec 测试 : Undefined method 'deliver' for nil:NilClass

    ruby-on-rails-3 - 如何设置 Rails 与 Devise 和脚手架生成模型的关联?

    ruby-on-rails - 跳过结账步骤但建立关联

    spree - "uninitialized constant User"同时设置 spree 和精炼厂时

    ruby-on-rails - Airbrake 和 Spree 商业 API : undefined method `airbrake_request_data`

    mysql - 使用 'having' 的 ActiveRecord Relation 的 Rails update_all 不起作用

    ruby-on-rails - 使一组方法可用于多个 Rails 应用程序的最简单方法是什么

    ruby-on-rails - 如何在开发环境中的 rails 中预编译 Assets ?

    ruby-on-rails - Ruby on Rails 日志文件太大