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、データベース内の整数です。

繰り返しますが、これはローカルホストで完全に正常に動作します。どう考えているか教えてください。


メソッドから削除returnした後、正常に動作しています。rep_score私はまだRubyに慣れてい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_irep_bonus、おそらくデータベースモデルから、文字列の結果から整数に変更されています。設定できるタイプキャストはいくつかあります。いくつかの変換に名前を付けるには:

  • 配列:to_a
  • 浮く:to_f
  • 整数:to_i
  • 弦:to_s
于 2012-07-18T13:39:02.913 に答える