Oh boy, this was a crazy one. It wasn't url_for that was behaving
differently. url_for on both servers seperates query parameters with
& (url_for the helper method; url_for the controller method does
not. I did not know this. Kinda confusing and unpredictable--and
undocumented).
But okay. I was then passing it through REXML in order to 'escape' it
for eventual inclusion in some XML:
I knew that a URL in xHTML required ampersands to be escaped like that,
even in an <a href>. I did not know that a URL in standard (non-x)HTML
required that. Really? Okay.
But it's confusing in part because an ERB template isn't _only_ used for
HTML. It can theoretically be used for creating any format, including
plain text, right? And someone using an ERB template to create (eg)
plain text is going to get tripped up there.
Interesting point -- I haven't tried generating any text/plain from an
ERB template.
An ERB template was generating XML. It took the result of a url_for
call, and put it through an XML-escaping routine, figuring that anything
that was being put in XML should be put through an XML escaping routine.
So we wound up with XML who's source looked like
<some_url>/controller/action?foo=foo&amp;bar=bar
Is this correct or not?
I'd say not
Try eliminating the extra escaping routine and see what happens...