Flex and Rails - NoMethodError

Hi all!!

Recently , i tryed to integrate flex and rail, and it was a nice work,

really fast and flexible, until a curious bug

On my local development machine, i try to destroy an item trough an id,

and all goes well.

i set up on the production machine and pop-up this error:

NoMethodError (undefined method `[]’ for nil:NilClass)

here’s the code of the mxml in question:

<mx:HTTPService contentType=“application/xml” id=“destroy_question”


useProxy=“false” method=“POST” result=“object_destroyed()”

fault=“object_not_destroyed()” >

  <mx:request xmlns="">






and here’s the controller:

def destroy_question_xml

if params[:question][:id][:value]

  @question = Question.find(params[:question][:id][:value])





The curious thing is that actually, on production machine, it send

correctly the values(“question”=>{“id”=>{“type”=>“integer”,

“value”=>“96”}}) , but still pop up the error NoMethodError (undefined

method `[]’ for nil:NilClass).

Someone has some thougt on this?

thanks a lot for reading

Hi, the last two lines seem suspect because you’re trying to delete and save something. For example,

def destroy_question_xml

if params[:question][:id][:value]
@question = Question.find(params[:question][:id][:value])

Thus, I would recommend checking your logic.

Good luck,


where exactly is the error?
which expression is nil?
- params[:question]
- params[:question][:id]
- params[:question][:id][:value]

did you debug it?

Little update:

in local i use mongrel, in production phusion passenger.

can it be a problem?

i don't know about your system, but maybe you try to do something over
ssl and you don't have it configured for your webserver?

It means you have a filter called require_ssl in your application.
This kind of filter will usuallly either redirect or stop the current
request if it is not made over ssl (e.g https://example.com) find the
one in your app to see more. Either make the web request over ssl, or
skip the filter if you don't need to use ssl. I'd recommend to use ssl
if this is a request that is being authenticated in some way.