1

我正在处理一个我还无法调试的错误。我在 Rails 6.0 中有一个 100% 绿色测试的应用程序。我尝试将应用程序更新到 Rails 6.1,现在我看到以下行为:

include ActionView::Helpers::NumberHelper
number_to_currency 7
TypeError (no implicit conversion of String into Integer)

红宝石 2.7.3 轨道 6.1

有很多宝石,我想知道这是否与某人修补某些东西有关,但我不知道是否有办法追踪修补资金的来源?或者,如果您有任何想法,我将不胜感激任何建议。

这是回溯:

number_to_currency 7
NoMethodError: undefined method `nan?' for nil:NilClass

   5  module ActiveSupport
   6    module NumberHelper
   7      class NumberToRoundedConverter < NumberConverter # :nodoc:
  11        def convert
  24          if precision = options[:precision]
  31            formatted_string =
❯ 32              if rounded_number.nan? || rounded_number.infinite? || rounded_number == rounded_number.to_i
  34              else
  40              end
  41          else
  47        end
  62      end
  63    end
  64  end
4

1 回答 1

1

通过使用pry-railsgem,您很可能通过在binding.pry发生错误的位置上方输入,然后重新运行代码来找到源。当 Pry REPL 出现时,您可以运行命令show-source number_to_currency。这将显示文件位置,例如:

[2] pry(main)> show-source number_to_currency

From: /Users/.../actionview-6.0.2.2/lib/action_view/helpers/number_helper.rb:70:
Owner: ActionView::Helpers::NumberHelper
Visibility: public
Signature: number_to_currency(number, options=?)
Number of lines: 3

def number_to_currency(number, options = {})
  delegate_number_helper_method(:number_to_currency, number, options)
end

如果接下来需要上定义链,也可以--super多次使用flag上去,直到找到问题为止。例如,要上升 2 个超级,你会做show-source --super --super number_to_currency

您可以通过以下方式查看更多选项show-source --help

于 2021-04-30T17:56:49.303 回答