Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ruby on rails上的小数和整数相乘_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails ruby on rails上的小数和整数相乘

Ruby on rails ruby on rails上的小数和整数相乘,ruby-on-rails,ruby,Ruby On Rails,Ruby,看起来很简单,但什么都不是 我有两个价值观: t.integer "quantity" t.decimal "unit_price", :precision => 7, :scale => 2 我想在每个发票循环中将数量乘以单价: invoice.quantity * invoice.unit_price 这会导致以下错误: undefined method `*' for nil:NilClass 我必须先转换这些值,还是缺少一些琐碎的东西 谢谢 返回零

看起来很简单,但什么都不是

我有两个价值观:

t.integer  "quantity"
t.decimal  "unit_price",         :precision => 7, :scale => 2
我想在每个发票循环中将数量乘以单价:

invoice.quantity * invoice.unit_price
这会导致以下错误:

undefined method `*' for nil:NilClass
我必须先转换这些值,还是缺少一些琐碎的东西

谢谢

返回零

您可以通过错误消息来判断

undefined method `*' for nil:NilClass
您正试图在NilClass的实例上执行方法*

以这个为例

> nil * 5
=> undefined method `*' for nil:NilClass (NoMethodError)
返回零

您可以通过错误消息来判断

undefined method `*' for nil:NilClass
您正试图在NilClass的实例上执行方法*

以这个为例

> nil * 5
=> undefined method `*' for nil:NilClass (NoMethodError)
这只是意味着发票数量为零

您可以通过执行invoice.quantity.to_i*invoice.unit_price来处理乘法运算,或者在进行计算之前检查它可能更合适。

这只是意味着invoice.quantity为零


您可以通过执行invoice.quantity.to_i*invoice.unit_price在乘法运算中处理此问题,或者在执行计算之前检查它可能更合适。

在迁移过程中,将默认值添加到这些列中

t.integer  "quantity", :default => 0
t.decimal  "unit_price",         :precision => 7, :scale => 2, :default => 0

这样,即使尚未为特定记录设置这些值,也不会出现此错误,我怀疑这里就是这种情况。

在迁移过程中,为这些列添加默认值

t.integer  "quantity", :default => 0
t.decimal  "unit_price",         :precision => 7, :scale => 2, :default => 0


这样,即使尚未为特定记录设置这些值,也不会出现此错误,我怀疑这里就是这种情况。

当我只输出invoice.quantity时,它会返回一个值?在哪里?在某种意义上?Rails有一种对你隐藏东西的方法。是的,在视图中。也许我应该退一步,首先在控制器中执行计算。Thanks@user1137277:我建议改为在模型上的方法中包装该计算。它返回一行nul,这导致了错误,谢谢当我只输出invoice.quantity时,它自己返回一个值?在哪里?在某种意义上?Rails有一种对你隐藏东西的方法。是的,在视图中。也许我应该退一步,首先在控制器中执行计算。Thanks@user1137277:我建议改为在模型上的方法中包装该计算。它返回一行的nul,这导致了错误,谢谢当我自己只输出invoice.quantity时,它会返回一个值吗?我尝试了你的示例,但得到了以下错误:nil不能强制为fixNum,这表明invoice.unit\u price也是nil。您可以使用invoice.unit_price.to_f,但首先检查nil是值得的。您是对的,这避免了错误,但输出为0,这显然意味着两个值都为零。我不明白的是,当我在视图中单独输出这些值时,它们都返回值当我只输出invoice.quantity时,它本身返回值?我尝试了你的示例,但得到了以下错误:nil不能强制为fixNum,这表明invoice.unit\u price也是nil。您可以使用invoice.unit_price.to_f,但首先检查nil是值得的。您是对的,这避免了错误,但输出为0,这显然意味着两个值都为零。我不明白的是,当我在视图中单独输出这些值时,它们都返回值