Ruby On Rails Helpers – Uso de variables de instancia en helpers

Tengo un ayudante para un controlador:

module CourseStepsHelper def current_quiz_result @course_step.step.step_quiz.quiz_attempts.where(:patient_id => current_user.id, :step_quiz_id => @course_step.step.step_quiz.id).first end end 

Tiene acceso a @course_step que se define en el progtwig CourseSteps show “action”. ¿Es esta práctica común usar variables de instancia en ayudantes?

Dependiendo del nivel de detalle para este resultado de la prueba, es posible que desee utilizar un parcial. En cuyo caso la syntax sería:

 <%= render :partial => 'quiz/results', :locals => { :quiz => @quiz } %> 

Si es relativamente simple y crees que debería estar en un ayudante, deberías hacer que el quiz un parámetro. Requerir que las vistas proporcionen una variable de instancia específica para usar su ayudante probablemente sería mal visto por otros desarrolladores.

 def quiz_result(quiz) # no need to call it "current" when we supply quiz # do some stuff end 

También me parece que es posible que desee reestructurar sus modelos de alguna manera. Como puede ver, implementé mis ejemplos con una clase de prueba. No estoy seguro de cómo se ve su modelo de datos, pero cuando llama a propiedades que están anidadas, generalmente es una señal de que algo está mal.

No he visto un buen argumento presentado para ninguno de los dos casos, y me topé con esta pregunta cuando estaba buscando una respuesta. Personalmente, he estado usando las variables de instancia en los métodos de ayuda donde es posible, ya que este es el enfoque más seco tanto para la ayuda como para la vista. En lugar de pasar la variable de instancia desde mi vista y definir mi método de ayuda para aceptarlo, solo puedo usarlo directamente en la ayuda. Un poco menos escribiendo, de todos modos …