best way to keep DRY

Hello folks,

I have models called Address and Cart and both have their needed
RESTful actions in place. Now there's a third model called Despatch
which assigns the Cart's contents to a chosen Address.

Ideally then, to keep DRY, I'd like to rely on my Address and Cart
controllers for:

1. choosing an Address as a recipient
2. displaying the Cart and allowing the user to make any modifications
to its contents

before having my Despatch controller create the despatch.

My plan is to:

1. have the Despatch controller set a session variable to indicate that
a despatch is being done

2. have the Address and Cart actions check that variable and alter
their displays accordingly, ie Address index will display a select as recipient
link in addition to the usual CRUD links.

3. have each step in the process point to my Despatch controller's
new action, with a params variable to indicate which step the user is
at, ie choosing recipient (redirect_to addresses_path), modifying cart
(redirect_to cart_path).

4. the last step will then be a link to Despatch's create action, which
will create the Despatch, empty the Cart and clear the session variable.

Does anyone know of a cleaner way of pulling this off?

Thanks in advance.