- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序中,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/
在我的应用程序中,99% 的时间我都想去除_insignificant_zeros。所以一直将选项传递给 number_to_currency 方法是一件痛苦的事情。我希望默认值为真。我认为这很简单,
我是一名优秀的程序员,十分优秀!