【问题标题】:Regarding the for each loop关于每个循环
【发布时间】:2015-12-06 14:27:06
【问题描述】:
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 循环后使用此代码,我的 if 条件未执行它总是执行块

我该如何解决这个问题

【问题讨论】:

  • 除非你明白你在做什么,否则不要命名一个方法exit。由于exit 已经是一个现有的方法名称,因此您将创建一个令人困惑的脚本。

标签: ruby ruby-on-rails-4 each


【解决方案1】:

这两行:

@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

【讨论】:

  • 我想检查所有问题的正确答案和选择答案是否相等
  • 我想你不明白它们是如何工作的 - docs.ruby-doc.com/docs/ProgrammingRuby/html/…
  • @JassaMahal Question 类到底是什么?它的样子。
  • 它有两个名称 correct_answer 字段和 selected_answer,我想使用 n 个问题来比较这些字段
  • 也许如果我们都能找到一堵大砖墙,我们都可以很快跑过去看看会发生什么。
猜你喜欢
  • 2013-11-22
  • 2020-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-15
  • 2017-12-16
  • 1970-01-01
相关资源
最近更新 更多