TypeError(String不能被强制转换为Fixnum)?

Dee*_*kor 6 heroku ruby-on-rails-3

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

这是我的代码:

@rep = rep_score(@u)
Run Code Online (Sandbox Code Playgroud)

根据日志,这是抛出错误的线.我已将其评论出来,并将更改推送到Heroku,应用程序现在运行正常.

这是rep_score方法:

def rep_score(user)
 rep = 0
 user.badges.each do |b|
   rep = rep + b.rep_bonus
 end
 return rep
end
Run Code Online (Sandbox Code Playgroud)

也是rep_bonus数据库中的整数.

再次,这在localhost上运行得非常好.让我知道你的想法.


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

小智 10

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

简单修复:

def rep_score(user)
 rep = 0
 user.badges.each do |b|
   rep = rep + b.rep_bonus.to_i
 end
 return rep
end
Run Code Online (Sandbox Code Playgroud)

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

  • 阵: to_a
  • 浮动: to_f
  • 整数: to_i
  • 串: to_s

  • 当它们都是整数时,为什么我需要对类型进行类型转换?这并没有解释为什么它适用于localhost. (2认同)