2

I want to get the gender of a person from a helper method like so:

sportists_helper.rb

def sportists_gender
  gender = self.gender

  if gender == "1"
    "Male"
  elsif gender == "2"
    "Female"
  end
end

and then print it out in a view: <%= sportists_gender %>, but this gives me undefined method 'gender' error, why is that?

vard
  • 4,057
  • 2
  • 26
  • 46
Xeen
  • 6,955
  • 16
  • 60
  • 111

1 Answers1

2

Assuming you have Person model. here is an example:

Helper:

def sportists_gender(person)
  gender = person.gender

  if gender == "1"
    "Male"
  elsif gender == "2"
    "Female"
  end
end

Call From View.erb:

 <% @person = Person.first %> // any object according to your view.
 <%= sportists_gender(@person) %> // display result. 
Dave
  • 4,376
  • 3
  • 24
  • 37
  • And to clarify, the reason your original code crashes is because the helper doesn't know what `self` is; helpers don't somehow get access to the model object for free. – chrismanderson Jan 19 '16 at 16:21
  • @Xeen, you may also want to rethink the design a bit. Would it make more sense to have this method in the Person model itself instead of a view helper? – Rahul Jan 19 '16 at 16:51