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
On Jan 10, 2008 9:26 AM, Decker [email protected] wrote:
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?
–
Ryan B.
Feel free to add me to MSN and/or GTalk as this email.
Ryan,
You’re the best!
Thanks!
On Jan 9, 2008, at 5:04 PM, Ryan B. wrote:
The helper methods are only available to the views.
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
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.
On Jan 10, 2008 2:24 PM, Jeff P.
[email protected]
wrote:
helper_method()
thanks,
jp–
Posted via http://www.ruby-forum.com/.
–
Ryan B.
Feel free to add me to MSN and/or GTalk as this email.
On Jan 9, 2008, at 9:54 PM, Jeff P. wrote:
helper_method()
thanks,
jp
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
Phillip K. wrote:
On Jan 9, 2008, at 5:04 PM, Ryan B. wrote:
The helper methods are only available to the views.
But if you want, you can define the method in the controller and
“export” it usinghelper_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
Hmmmn, what if you put a method in the “application.rb” controller and
then used helper_method() on it? Would it then be available to all
controllers and all views?
thanks,
jp