Is there documentation somewhere for how to write a helper? I understand that I''m supposed to define a method in the *_helper.rb method associated with my view, but I''m not sure how to output stuff to the page. (I tried puts, but that didn''t work.) If there isn''t documentation, are there examples someplace that I should be looking at? Thanks, --Paul --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Hey Paul, http://api.rubyonrails.org/classes/ActionController/Helpers/ ClassMethods.html It''s not all that explicit, so here are some key points. 1. Helpers are helpers are defined in modules. 2. The modules are mixed into the controller either automatically by naming convention or you can add your own. 3. To use a helper, just call its method name in the view. In the docs, they call the method hello_world from the view as: <%= hello_world %> Hope it helps, -Anthony On Mar 2, 2007, at 5:14 PM, Paul Lynch wrote:> > Is there documentation somewhere for how to write a helper? I > understand that I''m supposed to define a method in the *_helper.rb > method associated with my view, but I''m not sure how to output stuff > to the page. (I tried puts, but that didn''t work.) If there isn''t > documentation, are there examples someplace that I should be looking > at? Thanks, > --Paul > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> method associated with my view, but I''m not sure how to output stuff > to the page. (I tried puts, but that didn''t work.)well.. from a helper the usual way of rendering things into a view is accumulating the output on a variable and then just return it at the end of the helper. Like this def my_useless_helper output=String.new output << do_whatever output end And then in the view you can just use it like <%=my_useless_helper%> If that''s not enough for you (usually it is) there is one way to send text to the output of the erb directly. The method is call concat (you can look it up at the rails api). The tricky thing here is that you must have a binding for outputting like that. You can work around that by passing a block to the helper and then getting the binding of the block like this def my_useless_but_more_sophisticated_helper(&block) concat ''Write this directly to the erb'', block.binding unless !block_given? end I only use this kind of thing when I want to manipulate the body of the block I''m passing (suppose I want to parse the html inside the block and do soething with it). For evey day use, the former is much easier and you''ll see it much more often. Regards, javier ramirez -- -------- Estamos de estreno... si necesitas llevar el control de tus gastos visita http://www.gastosgem.com !!Es gratis!! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
The first approach does just what I wanted. Thanks a lot for your help! On Mar 2, 5:32 pm, javier ramirez <jrami...-7iWCczGtl7hBDgjK7y7TUQ@public.gmane.org> wrote:> > method associated with my view, but I''m not sure how to output stuff > > to the page. (I tried puts, but that didn''t work.) > > well.. from a helper the usual way of rendering things into a view is > accumulating the output on a variable and then just return it at the end > of the helper. Like this > > def my_useless_helper > output=String.new > output << do_whatever > output > end > > And then in the view you can just use it like > <%=my_useless_helper%> > > If that''s not enough for you (usually it is) there is one way to send > text to the output of the erb directly. The method is call concat (you > can look it up at the rails api). The tricky thing here is that you must > have a binding for outputting like that. You can work around that by > passing a block to the helper and then getting the binding of the block > like this > > def my_useless_but_more_sophisticated_helper(&block) > concat ''Write this directly to the erb'', block.binding unless > !block_given? > end > > I only use this kind of thing when I want to manipulate the body of the > block I''m passing (suppose I want to parse the html inside the block and > do soething with it). For evey day use, the former is much easier and > you''ll see it much more often. > > Regards, > > javier ramirez > > -- > -------- > Estamos de estreno... si necesitas llevar el control de tus gastos visitahttp://www.gastosgem.com!!Es gratis!!--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---