Ваша проблема в этой части
@questions.each do |question, answer|
if question == @question && answer == @answer
return "Well done, that's right!"
else
return "Not quite right have another go"
end
end
Если первый вопрос не является вопросом, который был задан, он немедленно вернет, что вы не правы, не глядя на следующий вопрос, потому что возврат возвращается из method
не из блока.
Даже если он вернется из блока, хотя он скажет, что вы ошиблись, а затем скажет, что вы правы (если вы правильно ответили на второй вопрос).
Чтобы решить эту проблему, вы можете изменить его на
def response
puts "Please type your answer below"
@answer = gets.chomp!
if @questions[@question].to_s.downcase == @answer.downcase
"Well done, that's right!"
else
"Not quite right have another go"
end
end
Теперь мы ищем ответ на основе вопроса и делаем ответ нечувствительным к регистру