#ruby-on-rails-3
#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
сообщение об ошибке от view:
undefined local variable or method `test_results'
Ответ №1:
Вы можете попробовать использовать @
if @instrument_results
Редактировать
Результат before filter не сохраняется. Я не знаю, что вы хотите сделать, но вы можете установить переменную уровня контроллера внутри функции test_results, а затем ссылаться на нее как @controller.variable_name. Но если вы намерены создать условное представление на основе возвращаемого значения test_results, я предлагаю вам перенаправить на другое действие в методе test_results и поместить содержимое успеха в текущий контроллер. Вы можете использовать модификаторы :only и :except, чтобы проверить, какое действие контроллера вызовет :before_filter . Надеюсь, это поможет.