Ruby Sinatra无法使while循环正常运行

时间:2016-01-30 17:43:26

标签: ruby loops sinatra display

尝试根据条件显示不同的页面。当位于while循环内部时,erb:game只显示一个空页面,它在while循环之外正确显示,但是一旦你在表单中输入一个值,它就会自动将数字重置为0.我在这里缺少什么?

get "/" do 
      count = 5  
      number = params["number"].to_i 

        if number == 0 
         erb :index
        else
          letters = find(number)
          while count > 0 do 

            guess = params["guess"]
            if letters.include?guess
              correct = check_guess(guess, letters)
            else
              count -= 1
            end
            disp = display(letters, correct)  
            erb :game, :locals => {:letters => letters, :disp => disp}   
          end

       end
end

1 个答案:

答案 0 :(得分:1)

你正在编写erb行内循环。它不会起作用。实际上它没有意义。只有在整个循环完成后才会显示视图。因此,当视图呈现时,到那时count的值为0

您无法在动作中渲染多个视图!你必须计算,然后最终渲染你的模板。