6
我收到一个奇怪的错误。我的应用程序运行在我的本地完全正常的,但我的Heroku的服务器上它给这个错误:TypeError (String can't be coerced into Fixnum):
TypeError(字符串不能强制转换为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
是数据库中的一个整数。
再次,本地主机上运行得很好。让我知道你的想法。
从rep_score
方法去除return
后,它的正常工作。我对Ruby还是个新手,把return
放在哪里有什么问题?这是其他语言的习惯。
为什么我需要强制转换的东西时,他们都是整数?这并没有回答为什么它在本地主机上工作。 – Deekor 2012-07-18 15:56:26
为什么是一个普遍的问题。我没有确切的答案,但它解决了这个问题。我发现从我的数据库中取出的整数并不总是被设置为正确的类型。无论问题出在我的数据库(我使用MySQL)上,我都不关心如何找到简单的类型转换来解决整个问题。 本地主机和生产是一个完全不同的环境。可能有数百万的可能性。 Ruby版本不同,gem ports不一样,平台不同,数据库版本不一样......这个列表继续下去,我还剩下40个字符来回答。 – CrazyVipa 2012-07-18 16:37:49
如果你阅读我的编辑,你可以看到我解决它之前,你回答这个问题摆脱'返回'。是否有返回导致错误的原因? – Deekor 2012-07-18 23:41:11