Flex and Rails - NoMethodError


#1

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”
url=“http://localhost:3000/admin/questions/destroy_question_xml
useProxy=“false” method=“POST” result=“object_destroyed()”
fault=“object_not_destroyed()” >
<mx:request xmlns="">

{qdg.selectedItem.id}

</mx:request>
</mx:HTTPService>

and here’s the controller:

def destroy_question_xml
if params[:question][:id][:value]
@question = Question.find(params[:question][:id][:value])
@question.destroy
@question.save
end
end

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


#2

On Tue, Mar 17, 2009 at 5:29 PM, Enzo R. <
removed_email_address@domain.invalid> wrote:

     <id>{qdg.selectedItem.id}</id>
 @question.save

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])
@question.destroy
@question.save
end
end

Thus, I would recommend checking your logic.

Good luck,

-Conrad


#3

Conrad T. wrote:

On Tue, Mar 17, 2009 at 5:29 PM, Enzo R. <
removed_email_address@domain.invalid> wrote:

     <id>{qdg.selectedItem.id}</id>
 @question.save

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])
@question.destroy
@question.save
end
end

Thus, I would recommend checking your logic.

Good luck,

-Conrad

yeah, that was a problem, but not the resolution.

i got many classes with this kind of class(of course, without the logic
error) , and all of them works in local, don’t works on the production
server.

anyway, thanks a lot for the reply!


#4

where exactly is the error?
which expression is nil?

  • params[:question]
  • params[:question][:id]
  • params[:question][:id][:value]

did you debug it?


#5

Little update:

in local i use mongrel, in production phusion passenger.

can it be a problem?


#6

MaD wrote:

where exactly is the error?
which expression is nil?

  • params[:question]
  • params[:question][:id]
  • params[:question][:id][:value]

did you debug it?

theorically none of them , because the system passes correctly the
values

( (“question”=>{“id”=>{“type”=>“integer”,“value”=>“96”}}) .

anyway i’m gonna debug and i’ll say more after


#7

Enzo R. wrote:

Little update:

in local i use mongrel, in production phusion passenger.

can it be a problem?

problem understood!!

the server calls two times the method, because the first is halted by
ssl_required

Filter chain halted as [:ssl_required] rendered_or_redirected.

someone know what this means?


#8

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?


#9

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.

Cheers,
Jeremy

On Mar 19, 2:36 am, Enzo R. removed_email_address@domain.invalid