Newbie question -- I thought that helpers were available in both views and controllers. The methods I'm putting in application_helper.rb don't seem to be available in the controllers. Am I missing something?
The helper methods are only available to the views.
Method heirarchy goes a bit like this:
Model Controller Helper View
With all the elements being able to access any method from any element above it.
Don’t put model code in the view because it will slow your application down. If you’re doing something like a Model.find, stick it in your controller. If you’re defining a new method for an object of Model, stick it in the model file. Helpers are methods you can call from the view to dry up your views. For example if you wanted to duplicate the e’s in a sentence such as: “The quick brown fox jumped over the lazy dog”, put this in your view:
<%= duplicate_e(“The quick brown fox jumped over the lazy dog”) %>
and this in your helper:
def duplicate_e(string) string.gsub(“e”,“ee”) end
Ryan,
You're the best!
Thanks!
But if you want, you can define the method in the controller and "export" it using
helper_method()
and then you can use it in the view.
So in your controller, you could do something like
helper_method :my_method
def my_method
end
http://wiki.rubyonrails.org/rails/pages/HowtoWorkWithHelpers
Peace, Phillip
Phillip Koebbe wrote:
If you put a method in the application.rb it should be available to all controllers that descend from ApplicationController, but referencing it in a view won’t work.
I just put this in application.rb
helper_method :say_hi
def say_hi "hi" end
and create a test.rhtml for an arbitrary controller that consisted of
<%= say_hi %>
and when I ran http://localhost:3000/arbitrary_controller/test, I saw "hi".
So it seems that it does, in fact, work. At least with Rails 1.2.3.
Peace, Phillip