calling a method in model from view
Solution 1
Try
def indicator
#bunch of if elsif statements returning a number 0-3
end
You don't need the self as it [corrected to] is a class level method.
Solution 2
In your view, you are calling an instance method indicator
on each report object
report.indicator
But in your model, you have defined a class method. So, to make it work, define your indicator method as an instance method, too:
def indicator
#bunch of if elsif statements returning a number 0-3
end
Solution 3
Your iteration variable report
is used for going through every instance of @reports
. With self.indicator
you are declaring a class method (via self.name
). So this would make it possible to call Report.indicator
. What you want is to call just on a single instance of Report, so you can define the method indicator in your model like this:
def indicator
#bunch of if elsif statements returning a number 0-3
end
Now this should work!
bennett_an
Career Firefighter/Paramedic. Interested in Ruby on Rails, PHP, Javascript. Versed in HTML and CSS
Updated on June 17, 2022Comments
-
bennett_an almost 2 years
I am trying to evaluate which indicator needs to be displayed next to an item based on if it's been viewed before or not, new comments etc. Until I decide on a symbol to use, I just want a number to display.
in my Report Model i have
def self.indicator #bunch of if elsif statements returning a number 0-3 end
in my view i have
<% @reports.each do |report| %> <%= report.indicator %> <% end %>
I get
undefined method 'indicator'
I thought I had a grip on how methods work... but clearly not, what am I doing wrong?
-
gotqn almost 11 yearsCould you tell is it all right to call a model method in the view, because we are skipping the controller in that way? Also, if it is a not good practice, what is the alternative?