populating a survey and persisting the user's response

Let's say I want to build a survey app that
1. pulls questions and their types out of one table (QUESTIONS)
2. processes these questions into say a 10 question form,
3. user fills in form fully and submits or partly and comes back to it
later. (RESPONSES)

I -think- I should have one controller (Form) that pulls records from
both Questions and (If has already started survey) Responses and loop
through in the view, constructing each formfield and the user's
response.

But,
1. Where do I put the logic re use this _partial for question type 1
(multiple choice) and this _partial for type 2 (essay)? The view, the
controller?
2. How can I save the user's responses continuously so that if the
connection is lost, they don't lose their responses?