gpt4 book ai didi

ruby-on-rails - Rails strip_insignificant_zeros 默认设置为 true

转载 作者:行者123 更新时间:2023-12-03 12:17:04 31 4
gpt4 key购买 nike

在我的应用程序中,99% 的时间我都想去除_insignificant_zeros。所以一直将选项传递给 number_to_currency 方法是一件痛苦的事情。我希望默认值为真。我认为这很简单,找到源代码,覆盖默认值。

因此,我创建了一个 config/initializers 文件,并添加了以下内容,但默认情况下这些零仍然存在。

ActiveSupport::NumberHelper::NumberConverter::DEFAULTS[:currency][:format][:strip_insignificant_zeros] = true
ActiveSupport::NumberHelper::NumberConverter::DEFAULTS[:format][:strip_insignificant_zeros] = true

我在这里错过了什么?

我引用的 rails 和源代码版本:http://www.rubydoc.info/docs/rails/4.1.7/ActiveSupport/NumberHelper/NumberConverter

最佳答案

您的方法的 - 非常出乎意料 - 问题是,对于 number_to_currency 助手,实际上在两个不同的位置有两个默认设置。其中之一是您在初始化程序中正确更新的 DEFAULTS 常量。

但这还不够:DEFAULTS 哈希是 merged使用语言环境中定义的格式设置。您可能没有在 config/locales/en.yml 语言环境文件中定义的任何格式设置,但在 ActiveSupport 中也有一个默认的语言环境设置文件。从它的 source code 可以看出,它将 strip_insignificant_zeros 设置为 false

此行为的另一个证明是,如果您在 config/locales 中放置一个新的、甚至是空的区域设置文件,例如my_locale.yml,并尝试在此语言环境下调用转换器:number_to_currency(123, locale::my_locale),您的初始化设置将真正起作用。

因此,正确的解决方案是在您的语言环境中定义格式设置,而不是初始化程序。因此,您的语言环境中的以下最小设置应该有效:

# config/locales/en.yml
en:
number:
currency:
format:
strip_insignificant_zeros: true

关于ruby-on-rails - Rails strip_insignificant_zeros 默认设置为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36760218/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com