ArgumentError:无效的基数-1

dev*_*ter 2 ruby ruby-on-rails

rails 3.2 , ruby 1.9.3应用程序中尝试对-1整数执行简单操作:在模型上执行此操作:

order_details[:quantity].to_i - 1
Run Code Online (Sandbox Code Playgroud)

得到了 ArgumentError: invalid radix -1

试图在网上查看,发现很少的文档.

任何帮助,请?

Rei*_*ard 7

我假设order_details[:quantity]是一个String(尽管答案是相同的).

String#to_i为数字将被解释为的基数采用可选参数.例如,"10101".to_i(2)将解析为基数2(21作为结果给出小数).您的代码行被解释为

order_details[:quantity].to_i(-1)
Run Code Online (Sandbox Code Playgroud)

因为负一个(-1)的基础是没有意义的,它会给你这个错误.解决方案是将括号括起来,order_details[:quantity].to_i以便首先进行评估:

(order_details[:quantity].to_i) - 1
Run Code Online (Sandbox Code Playgroud)

编辑:或者,确保有-两个参数的空格(或两侧没有空格),Ruby应该正确解析它.可能是您的实际代码被写为order_details[:quantity].to_i -1(注意-和之间没有空格1)导致它读取-1然后将其作为参数传递给to_i.