I just did this myself so let me try:
there are many ways to do preview. The way I'm doing it, I'm showing
the preview in all its glory and show the filled in form on the same
page so user can edit it some more or submit it.
main thing to realize is you can use the same new and edit view you
are using now and call the same actions. I'll tackle previewing the
edit of an existing post first.
First add a preview button to the form e.g.,
<input type="submit" name="submit" value="Post it!" />
<input type="submit" name="submit" value="Preview" />
In my PostsController's update method (my message model is Post,
# find @post as usual
@post = Post.find(params[:id])
if params[:submit] == 'Preview'
@post.attributes = params[:post]
## do usual thing for rest of it