gpt4 book ai didi

ruby-on-rails - 如何修复 Rails 中的 ActionView::Template::Error (Infinity)?

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:34 26 4
gpt4 key购买 nike

我注意到我的生产应用程序日志中有一个奇怪的错误:

ActionView::Template::Error (Infinity): /path/to/page/with/problem
/myapp/shared/bundled_gems/ruby/1.9.1/gems/activesupport-3.0.20/lib/active_support/core_ext/float/rounding.rb:16:in `round'
/myapp/shared/bundled_gems/ruby/1.9.1/gems/activesupport-3.0.20/lib/active_support/core_ext/float/rounding.rb:16:in `round'
/myapp/shared/bundled_gems/ruby/1.9.1/gems/activesupport-3.0.20/lib/active_support/core_ext/float/rounding.rb:14:in `round'
/myapp/current/path/to/file/with/problem.rb:106:in `my_buggy_method'

代码中有这样一段话:

def my_buggy_method
(number1 - number2).round(2)
end

我不知道是什么数字触发了这个错误。如何重构我的代码以避免此错误?

更新:我设法在生产环境中启动了一个 Rails 控制台,并追踪了上述方法中使用的值:

number1 == Infinity
number2 == 0

更新:经过进一步调查,number1 由于被零除而返回 Infinity:

number1 == 113 / 0.0

既然我知道这个 Infinity 来自哪里,我将添加一个检查以确保我永远不会被零除。

最佳答案

此错误的原因是由于尝试舍入 或显示Infinity。我没想到这个数字,所以我添加了额外的检查以确保我不会通过除以零来创建 Infinity

关于ruby-on-rails - 如何修复 Rails 中的 ActionView::Template::Error (Infinity)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23686179/

26 4 0