# Help refactoring a multi-page process

**URL:** <https://www.ruby-forum.com/t/help-refactoring-a-multi-page-process/119846>\
**Category:** Rails\
**Created:** [November 11, 2007, 7:23am UTC](https://www.ruby-forum.com/t/help-refactoring-a-multi-page-process/119846 "2007-11-11T07:23:38Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![dan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/eada6e/32.png) [@dan](https://www.ruby-forum.com/u/dan)\
**Post date:** [November 11, 2007, 7:23am UTC](https://www.ruby-forum.com/t/help-refactoring-a-multi-page-process/119846/1 "2007-11-11T07:23:38Z")

</div>

We have been working on an application for a call center where calls  
are scripted for phone operators. Upon receiving a phone call, the  
operator is presented with a screen that tells them what to say, and  
what information to collect from the caller. Based on the information  
received from the call, the operator is taken through a progression of  
similar screens, where the page flow can change dramatically based on  
the caller’s responses. Extensive information about the call itself  
is logged, in addition to the information relayed to the operator by  
the caller.

The operator may have to add a caller as a client, look their existing  
client record up, reconcile situations where a caller believes that  
they are an existing client, but no information is found, etc. In the  
context of a phone call, adding a client or identifying a client from  
a list drops the operator back into the phone call flow, however  
resources such as clients can be managed in a more typical CRUD  
scenario in addition to being interacted with during a phone call,  
where adding a client would route the user to back to the client list.

Typically, associations to clients and as many as six other business  
objects are made during a call.

We have been working on restructuring this part of the application to  
be more RESTful, but haven’t landed on anything that we are happy  
with. Any input would be greatly appreciated.

Thanks.
