Ruby on Rails ne pouvez pas convertir une Chaîne en un Entier

Je suis l'envoi de données JSON à un contrôleur qui l'analyse.

ROR Code

Class.where(challenge_id:challenge.id,song_id:song_hash['song_id']).first

La erreur est

can't convert String into Integer

J'ai même changer le song_id:song_hash['song_id'] à song_id:song_hash['song_id'].to_i mais il ne fonctionne pas

La DONNÉES de Hachage est

{"session_token"=>"Xt9toEzHI3bYXeJNkenyqg", "challenge"=>{"challenge_id"=>"15", "player_name"=>"usman", "guessed_songs"=>{"0"=>{"song_id"=>"10", "guessed"=>"YES"}, "1"=>{"song_id"=>"11", "guessed"=>"YES"}, "2"=>{"song_id"=>"12", "guessed"=>"YES"}, "3"=>{"song_id"=>"13", "guessed"=>"YES"}, "4"=>{"song_id"=>"15", "guessed"=>"YES"}}, "player_status"=>{"0"=>{"coins"=>"20", "points"=>"0", "player_name"=>"usman"}, "1"=>{"coins"=>"20", "points"=>"0", "player_name"=>"Usman"}}}}

Ne trouvez pas ce que n'est pas la conversion en entier

  • Les DONNÉES JSON que vous avez fourni n'est pas json à tous. {"song_id":q1,"guessed":"YES"} n'est pas json. {"song_id":"t1","deviné":"OUI"} est json. Remarquez les guillemets
  • En dehors de cela, l'indice est "song_id" : q1. q1 est RIEN. Pas une chaîne, ni un entier. Mais les rails attend song_id entier, mais son impuissance
  • en fait, Q1 et Q2 sont les variables. les données sont en nombre entier supposons que 1,2,3,4,5.. j'ai édité le Q
  • qu'est-ce que ce challenge.id ? est-il arriver entier
  • Pouvez-vous inspecter avec levier ou un débogueur juste à la ligne avant et après les valeurs de défi.id et song_hash['song_id']?