ruby-on-rails-3 – TypeError(字符串不能被强制转换为Fixnum)?

我收到了一个奇怪的错误.我的应用程序在我的本地主机上运行完全正常但在我的Heroku服务器上它给出了这个错误:TypeError(String不能被强制转换为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上运行得非常好.让我知道你的想法.

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

解决方法

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

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...