表单传递字符串而不是浮点数

Posted

技术标签:

【中文标题】表单传递字符串而不是浮点数【英文标题】:Form passing String instead of Float 【发布时间】:2011-10-25 11:41:54 【问题描述】:

我在模型上有一个 before_save 方法,它使用 2 个属性进行一些计算,当我提交表单时出现错误:

TypeError in AntropometricasController#create

can't convert String into Integer

我正在使用 ruby​​ 1.9.2 和 rails 3.0.9

编辑:通过删除 before_save 并在创建操作上运行该方法解决了这个问题(不知道它是否正确):

@evaluation.calc_imc(@evaluation.value1.to_f,@evaluation.value2.to_f)

在我的模型上,方法是:

attr_accessor :imc
def calc_imc(value1,value2)
  imc = value1/(value2*value2)
end

但是我的evaluation.imc 是零。我想在视图上显示这个值,我做错了什么?

更新:解决了我的问题,我使用的是@evaluation.calc_imc(@evaluation.value1.to_f,@evaluation.value2.to_f),只是移动到视图并且它工作了

【问题讨论】:

脱下裤子,给我们看看你的密码宝贝 数据不足。不知道你在哪里设置它以及你在哪里检查它等等。正如 danontheline 所说,需要查看一些上下文代码。 【参考方案1】:

似乎给imc赋值可以定义局部变量,而不是给对象的属性赋值。

只需将imc = value1/(value2*value2) 替换为self.imc = value1/(value2*value2)

def calc_imc(value1,value2)
  self.imc = value1/(value2*value2)
end

【讨论】:

不,即使使用 self.imc 也有 nil 值

以上是关于表单传递字符串而不是浮点数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Delphi 中将浮点数转换为字符串,指定有效数字,而不是十进制数字(而不是 G 格式)

为啥我们在 OpenGL (ES) android 中以字节分配块而不是浮点数,尽管我们大部分时间都使用浮点数

用于浮点数或 int 的 Python 正则表达式,而不是将浮点数分成两个浮点数

为啥神经网络输出浮点数而不是整数?

Objective C - 通过选择器传递浮点数

为啥 Kivy 使用浮点数而不是整数?