【发布时间】:2018-02-14 21:04:01
【问题描述】:
在一个 rails 项目上实现了 Stripe。 Stripe 默认接收 '500' 并发送 5.00 到他们的 API。如果我做 amount.to_i*100 我可以得到 '500' 保持 500,但是当 amount = 5.67 时仍然得到 5.00。
如何更改控制器、视图或字段以正确允许两者?
控制器代码
@amount = params[:amount].to_i*100
查看代码
<input class="form-field two-decimals" name="amount" type="number" step="any" >
【问题讨论】:
-
to_i用于 integer 转换,截断小数点后的任何内容。考虑使用to_f,它将从字符串中读取一个浮点数。 -
尝试使用
(params[:amount].to_f*100).round从浮点字符串中获取整数值。请注意,我没有使用.to_i,因为这可能会导致数学错误,而是选择使用.round。
标签: ruby-on-rails decimal stripe-payments currency