2011-06-10 76 views
0

我正在验证应用程序控制器中是否存在“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

可以尝试使用@

if @instrument_results 

编辑

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

+0

无法找到。 – Jay 2011-06-10 14:19:34

+0

编辑了更多的信息 – LoSciamano 2011-06-10 15:19:56