I'm getting a weird error. My app runs perfectly fine on my localhost but on my Heroku server it's giving this error: TypeError (String can't be coerced into Fixnum):
Here is my code:
@rep = rep_score(@u)
According to the logs that's the line throwing the error. I've commented it out and pushed the changes to Heroku and the app runs fine now.
Here is the rep_score
method:
def rep_score(user)
rep = 0
user.badges.each do |b|
rep = rep + b.rep_bonus
end
return rep
end
Also rep_bonus
is an integer in the database.
Again this runs perfectly fine on localhost. Let me know what you think.
After removing return
from the rep_score
method it's working fine. I'm still new to Ruby, is there something wrong with putting return
? It's habit from other languages.
Ruby uses +
as a combination tool for strings AND mathematical situations.
Simple fix:
def rep_score(user)
rep = 0
user.badges.each do |b|
rep = rep + b.rep_bonus.to_i
end
return rep
end
to_i
is changing rep_bonus
, which is probably from the database model, from a string result into an integer. There are a few different typecasts you can set. To name a few conversions:
to_a
to_f
to_i
to_s
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With