It might be instructive to look at the code for the cycle method.  It
actually creates an object and calls its to_s method each time you call
'cycle'.

You could do a similar thing.  Create a small class with a 'to_s' method
that returns something the first time, but nothing thereafter.

class Once
  def initialize(first_value)
    @value = first_value
  end

  def reset
    @value = ''
  end

  def to_s
    value = @value
    reset
    return value
  end
end

Stick that in lib/ or include it some other way. Then you can call cycle,
but pass your object as a single argument to cycle (cycle doesn't require
actually more than one param, though you could pass your object as both
params, or just pass it as the first param and '' as the second):

<% label_once = Once.new('_bar') %>

  <tr class='foo<%= cycle(label_once) %>'>

You'll get

  <tr class='foo_bar'>
  ...
  <tr class='foo'>
  ...
  <tr class='foo'>

Might be a bit overkill, but kind of fun. :)

On Sun, Apr 19, 2009 at 5:52 PM, Joshua Muheim <
[email protected]> wrote:

>
> > Just write one:
> >
> > in a helper:
> >    def only_first_time(what)
> >      first_time = @previous_what.nil?
> >      @previous_what ||= what
> >      what if first_time
> >    end
>
> Thanks, but that's not very versatile. I could only use it once. AFAIK I
> can use cycle() wherever I want, so I'd like the helper to be somehow
> dependant from where it has been called. Is this possible?
>
> Thanks
> --
> Posted via http://www.ruby-forum.com/.
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to