6

我收到一个奇怪的错误。我的应用程序在我的本地主机上运行得非常好,但在我的 Heroku 服务器上它给出了这个错误:TypeError (String can't be coerced into Fixnum):

这是我的代码:

@rep = rep_score(@u)

根据日志,这是引发错误的行。我已将其注释掉并将更改推送到 Heroku,该应用程序现在运行良好。

这是rep_score方法:

def rep_score(user)
 rep = 0
 user.badges.each do |b|
   rep = rep + b.rep_bonus
 end
 return rep
end

也是rep_bonus数据库中的整数。

同样,这在 localhost 上运行得很好。让我知道你的想法。


return从方法中删除后,rep_score它工作正常。我还是 Ruby 的新手,put 有什么问题return吗?这是其他语言的习惯。

4

1 回答 1

10

Ruby+用作字符串和数学情况的组合工具。

简单修复:

def rep_score(user)
 rep = 0
 user.badges.each do |b|
   rep = rep + b.rep_bonus.to_i
 end
 return rep
end

to_i正在改变rep_bonus,这可能来自数据库模型,从字符串结果变为整数。您可以设置几种不同的类型转换。仅举几例转换:

  • 大批:to_a
  • 漂浮:to_f
  • 整数:to_i
  • 细绳:to_s
于 2012-07-18T13:39:02.913 回答