想要返回全局变量而不是局部变量

时间:2011-06-10 13:56:14

标签: ruby-on-rails-3

我正在验证应用程序控制器中是否存在“test_results”。它作为局部变量返回。我想把它称之为一次,并让它可用于整个会议。我该怎么做?

应用程序控制器中的

“test_results”:

  def test_results
    (0 .. 4).each do |x| # looks for answers to the first 4 questions
      if @answers[x].nil? || @answers[x] == 0.0
        return false
        break
      end
    end
    return true
  end

其他控制人员:

before_filter :test_results

if test_results
   ...do stuff
else
   ...display "take the test"
end
来自视图的

错误消息:

undefined local variable or method `test_results'

1 个答案:

答案 0 :(得分:1)

您可以尝试使用@

 if @instrument_results

修改

未存储过滤器之前的结果。我不知道你想做什么,但你可以在test_results函数中设置一个控制器级变量,然后将它作为@ controller.variable_name引用。但是如果你打算根据test_results返回值创建一个条件视图,我建议你重新定向到test_results方法中的另一个动作,并将成功内容放在当前控制器中。 您可以使用:only和:except修饰符来检查控制器的哪个操作将调用:before_filter。 希望这会有所帮助。