craft()->urlManager->setRouteVariables() loads the correct template but does not pass in the variables everybody!

setRouteVariables() doesn't appear to be working for me.  If I boil my controller function down to just this:

public function actionSubmitForm() {
    craft()-&gt;urlManager-&gt;setRouteVariables([
        'foo' =&gt; 'bar'
    ]);
}


and my &lt;form method="post" action="" accept-charset="UTF-8"&gt; contains the following (among other inputs):

&lt;input type="hidden" name="action" value="directoryForms/submitForm"&gt;


it hits the correct endpoint and then reloads the appropriate template, but it doesn't give me access to the {{ foo }} variable in that template.  It just tells me Variable "foo" does not exist.  I know it's hitting the right controller endpoint because if I die() there it dies as expected.

Any thoughts?  I've really boiled this one down as far as I can.  I must be missing something obvious.  Thanks!
My solution was to load the template directly rather than routing to the controller first.  Essentially, in my registerSiteRoutes() function I replaced this:

"payment" =&gt; ['action' =&gt; 'someController/doPayment']


with

"payment" =&gt; 'templateDir/core/payment'


I didn't even realize you could do this in registerSiteRoutes()!