I have a view helper file, app/helpers/analysis_helper.rb, whose toplevel methods I’ve been using in various view files. Works fine. I then defined an AnalysisSummary class inside analysis_helper.rb to package up some view-specific functionality.
However, when I try to instantiate an AnalysisSummary in a view file, I get the error:
uninitialized constant ActionView::CompiledTemplates::AnalysisSummary
Perhaps Rails is telling me that I shouldn’t be defining a class inside a helper file? If so, where would you suggest parking AnalysisSummary? It’s not a controller, it’s not a model…
Thanks.
Why does it need to be a class? Why not just a collection of methods? That’s what a helper is: a collection of helpful methods. Business logic does not belong in helpers. You can place your code in a module within the helper file if you want to give some more structure and organization, though.
You can put classes in
app/modelswithout it having to be an ActiveRecord class, but you should seriously consider what the purpose of your class is before you place it there.If it concerns only rendering the view, and not accessing data directly, it belongs in the view or a view helper.