Me aparece un error raro. Mi aplicación funciona perfectamente bien en mi localhost, pero en mi servidor Heroku se está dando este error: TypeError (String can't be coerced into Fixnum):
TypeError (¿La cadena no se puede forzar en Fixnum)?
Aquí está mi código:
@rep = rep_score(@u)
De acuerdo con los registros Esa es la línea que lanza el error. Lo comenté y presioné los cambios en Heroku y la aplicación funciona bien ahora.
Aquí es el rep_score
método:
def rep_score(user)
rep = 0
user.badges.each do |b|
rep = rep + b.rep_bonus
end
return rep
end
También rep_bonus
es un número entero en la base de datos.
De nuevo, esto funciona perfectamente bien en localhost. Déjame saber lo que piensas.
Después de retirar return
del método rep_score
que está funcionando bien. Todavía soy nuevo con Ruby, ¿hay algún problema con poner return
? Es un hábito de otros idiomas.
¿Por qué necesito encasillado algo cuando ambos son números enteros ? Y eso no responde por qué funciona en localhost. – Deekor
¿Por qué es una pregunta universal? No tengo la respuesta exacta de por qué, pero soluciona el problema. He encontrado que los enteros extraídos de mis bases de datos no siempre se configuran como el tipo correcto. Si el problema es con mi base de datos (utilicé MySQL) o no, no me interesa averiguarlo ya que un simple tipo de edición corrige todo el problema. Localhost and Production es un entorno completamente diferente. Podrían ser millones de posibilidades Versiones de Ruby diferentes, puertos de gemas no iguales, plataformas diferentes, versiones de bases de datos diferentes ... la lista sigue y sigue, y me quedan 40 caracteres para responder. – CrazyVipa
Si lee mi edición, puede ver que la solucioné para deshacerse del 'retorno' antes de responder esta pregunta. ¿Hay alguna razón por la que la devolución estaba causando el error? – Deekor