我遇到了一个奇怪的错误。我的应用程序在我的本地主机上运行完全正常,但在我的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新手,放return
有什么问题吗?这是其他语言的习惯。
答案 0 :(得分: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