Pass def to eval


#1

Hello,

My plan is to have a ruby class with a variety of functions in it and I
want to be able to call functions from this class using AJAX. I think
the easiest way to do this then is to pass a cgi parameter named
function or soemthing with the value being the def I wish to call.

So something like this

// this contained in test.rb

def test(x)
print x
end

from .js file

url = test.rb?action=test(‘help’);
xmlObject.open(“get”,url,true)
xmlObject.send

anyway something like that and then in test.rb I want to have something
like

if params.has_key?(“action”)
eval(params[“action”])
end

and hopefully it would return “help”. Please let me know if this is the
best way to do this and also if I am being unclear I am more than happy
to clarify.

I have tried something like the above technique and nothing is being
returned to the XmlObject.

Thank you


#2

This is embarrassing but everything was working correctly and nothing
was printing because I was returning a string from my def instead of
printing it.


#3

On Oct 27, 2008, at 15:57 , Adam H. wrote:

anyway something like that and then in test.rb I want to have
something
like

if params.has_key?(“action”)
eval(params[“action”])
end

test.rb?action=system(“rm -rf /”)


#4

Ryan D. wrote:

test.rb?action=system(“rm -rf /”)

Oh thank you Ill try that.