如何让rails在json中渲染一个bigdecimal作为一个没有尾随零的数字

时间:2018-02-02 19:21:58

标签: ruby-on-rails json ruby

我想知道如何让json中的rails渲染一个bigdecimal作为一个没有尾随零的数字。

目前在我的应用中,使用as_json Rails将活动记录实体的bigdecimal值渲染为带小数的数字,例如: bigdecimal 2.0呈现2.0(不是字符串)。我希望它呈现为2(不是字符串,没有尾随零)。

为了尝试这个,我使用了jbuilder并使用了rails helper方法number_with_precision和选项strip_insignificant_zeros: true;但是,这会将值转换为字符串。将to_f加到最后会使'' 2' 2.0。

有没有办法在json中渲染一个bigdecimal作为一个没有尾随零的数字?

谢谢

2 个答案:

答案 0 :(得分:0)

尝试使用to_i方法将小数转换为整数

答案 1 :(得分:0)

如果数字的小数部分为0 - 只需转换为Integer,否则转换为Float。

(x.frac.zero? ? x.to_i : x.to_f)