2015-09-10 3 views
-5
def exit 
    @result = 0 
    @correct_answer = Question.pluck(:correct_answer).first 
    @selected_answer = Question.pluck(:selected_answer).first 
    @id = Question.pluck(:id) 
    @questions = Question.all 
    #binding.pry 
    @questions.each do |i| 
    if @correct_answer == @selected_answer 
     @result += 1 
    else 
     @result -= 1 
    end 
    end 
end 

Я использую этот код после реализации .each цикла моих, если условия не выполняются всегда идти истинную блочнымОтносительно каждого цикл

, как я могу решить эту проблему

+0

Не называйте метод 'exit' если вы не понимаете, что вы делаете. Вы создадите запутанный скрипт, так как 'exit' уже является существующим именем метода. –

ответ

0

В этих двух строках :

@correct_answer = Question.pluck(:correct_answer).first 
@selected_answer = Question.pluck(:selected_answer).first 

Вы извлекаете первые исправленные и выбранные ответы из базы данных.

Когда вы проходите через каждый цикл, вы всегда сравниваете, совпадают ли эти два матча, а не ответы, связанные с текущим вопросом. Таким образом, результат всегда будет таким же.

Я думаю, что это то, что вы после:

def exit 
    @result = 0 
    @questions = Question.all 
    @questions.each do |question| 
    if question.correct_answer == question.selected_answer 
     @result += 1 
    else 
     @result -= 1 
    end 
    end 
    @result 
end 
+0

, но это код, дайте мне только один вопрос ouput –

+0

Я хочу проверить все вопросы correct_answers и selected_answer, если они равны или нет –

+0

Я думаю, вы не понимаете, как каждый работает - http://docs.ruby-doc.com/ docs/ProgrammingRuby/html/ref_c_array.html # Array.each – ReggieB

Смежные вопросы