title: What's the correct way to run one controller action from another controller action without an HTTP redirect?
body: <p>I'd like to be able to dispatch from one controller action to another conditionally, based on a combination of query parameters and data in the database.</p>
  
  <p>What I have right now is something like:</p>
  
  <pre><code>class OldController &lt; ApplicationController
    def old_controller_action
      if should_use_new_controller
        new_params = params.dup
        new_params[:controller] = "new_controller_action"
        redirect_to new_params
        return
      end
      # rest of old and busted
    end
  end
  
  class NewController &lt; ApplicationController
    def new_controller_action
      # new hotness
    end
  end
  </code></pre>
  
  <p>This works just fine, but it issues an HTTP redirect, which is slow.  I'd like to be able to do this same thing, but within the same HTTP request.</p>
  
  <p>Is there a clean way to do this?</p>
  
  <p><strong>Edit:</strong> The bounty will go to someone who can show me a clean way to do this that leaves the controllers and their actions relatively untouched (other than the redirect code itself).</p>