【问题标题】: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 所说,需要查看一些上下文代码。

标签: ruby-on-rails-3 model-view-controller view methods


【解决方案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 值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
相关资源
最近更新 更多