If you look at the value that you assign to x from your NDSolve you will see that it is {{r->stuff,theta->morestuff}}.
That means there is an extra layer of {} in each of your subsequent uses of /.x and you need to either do NDSolve[stuff][[1]] or you need to do x[[1]] to eliminate that extra layer. That makes your error message go away and all that remains is a warning about not quite being able to provide you with expected precision, but I think that can be ignored in this case.
You need to do the same thing with your y and NDSolve in your second example.
With those your problems are solved.