Ho uno strano errore. La mia app funziona perfettamente bene sul mio localhost, ma sul mio server Heroku che sta dando questo errore: TypeError (String can't be coerced into Fixnum):
TypeError (La stringa non può essere forzata in Fixnum)?
Ecco il mio codice:
@rep = rep_score(@u)
Secondo i registri che è la linea di gettare l'errore. Ho commentato e spinto le modifiche a Heroku e l'app funziona bene ora.
Ecco il metodo rep_score
:
def rep_score(user)
rep = 0
user.badges.each do |b|
rep = rep + b.rep_bonus
end
return rep
end
anche rep_bonus
è un intero nel database.
Anche in questo caso funziona perfettamente su localhost. Fatemi sapere cosa ne pensate.
Dopo aver rimosso return
dal metodo rep_score
che sta funzionando bene. Sono ancora nuovo a Ruby, c'è qualcosa di sbagliato nel mettere return
? È abitudine da altre lingue.
Perché ho bisogno di typecast qualcosa quando sono entrambi interi ? E questo non risponde perché funziona su localhost. – Deekor
Perché è una domanda universale. Non ho la risposta esatta su Perché, ma risolve il problema. Ho scoperto che i numeri interi estratti dai miei database non sono sempre impostati come il tipo giusto. Se il problema riguarda il mio DB (ho usato MySQL) o meno, non mi interessa scoprire come un semplice typecast risolva l'intero problema. Localhost e Production è un ambiente completamente diverso. Potrebbe essere milioni di possibilità. Le versioni di Ruby sono diverse, le porte di gem non sono le stesse, le piattaforme diverse, le versioni di database sono diverse ... la lista va avanti e avanti e ho 40 caratteri a disposizione per rispondere. – CrazyVipa
Se leggi la mia modifica, puoi vedere che l'ho risolto eliminando il 'return' prima di rispondere a questa domanda. C'è un motivo per cui il reso ha causato l'errore? – Deekor