You can create a pointer to your display_price method with a Proc object, e.g.:

  this_func = Proc.new {|groc, bat| display_price(groc, bat)}

  loop(this_func, batch)

Your loop method invokes the actual function with the .call method, e.g.:

  def loop(func, matrix)
    # Note that .each will almost certainly not yield the matrix object itself.
    matrix.each { |matrix_item| func.call(@grocery, matrix) }
  end

No clue if that will work for your actual application--trying to figure out 
what you might be doing is making my head hurt. ;-)  This feels like it's well 
outside of noob-land.  If you back up & tell us more about your underlying 
goals, we may be able to give advice for staying w/more straightforward 
processing.

HTH,

-Roy

-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of 
tyliong
Sent: Tuesday, October 28, 2008 8:17 AM
To: Ruby on Rails: Talk
Subject: [Rails] Passing a function with arguments to another function with 
arguments that is a loop


Hi, I am a noobie. I just want to know what is the standard or most
effective way of doing this

I have two functions


        def display_price(grocery,batch)
                grocery_price = grocery.send(batch).price
                if grocery_price
                        number_to_currency(grocery_price)
                else
                        "NA"
                end
        end

def loop(func,matrix)

matrix.each { |matrix| display_price(@grocery,matrix) }

end


the "func argument" in the loop function is suppose to be
display_price but how do i put it in if the "batch" is the thing that
I want to be looped through?


--~--~---------~--~----~------------~-------~--~----~
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