Smith Allen
Smith Allen

Reputation: 53

Ruby on Rails - using helpers in html.erb

I'm probably missing some things. Say for example I have a helper function in app/helpers/foo_controller.rb and the code is as follows:

def sample_helper(count)
    #implementaton...
end

and I want to use this helper in a webpage generated by rails and the code is as follows:

    <%= sample_helper(user.id) %>

and if I try to run the webpage it will throw me an error saying that the method is not defined. Thanks in advance!

Upvotes: 3

Views: 7700

Answers (2)

Alex Wayne
Alex Wayne

Reputation: 187262

You don't quite have the naming conventions right.

Name your helper file app/helpers/foo_helper.rb and in it you should have this:

module FooHelper
  def sample_helper(count)
    "#{count} items" # or whatever
  end
end

And now, from any view rendered by FooController you should be able to use the sample_helper method.


Also, you should know that if you use the rails generators this structure is setup for you. All you need to do is add methods to the files that get generated. That way you don't need to guess the naming conventions.

For example, this command will make a controller file, controller test files, a helper file, and and an index view file, all ready for you to customize.

rails g controller foo index

Upvotes: 4

Martin M
Martin M

Reputation: 8668

Is your helper should be in a file called app/helpers/foo_helper.rb that contains a a module of the same name as the helper (camelized) Like:

module FooHelper 
  def sample_helper(cont)
    # implementation
  end
end

That's the way Rail auto loads helpers.

Upvotes: 0

Related Questions