表单传递字符串而不是浮点数
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 中以字节分配块而不是浮点数,尽管我们大部分时间都使用浮点数