How do I generate a page from a controller from inside a model

I have a model that I want to use for generating web pages. The pages
will be what is rendered by a controller action. The generated pages
will be FTP'ed to a hosting site where they will served up as static
pages.

One approach is to do it like ActionController::TestCase:

class Page

  belongs_to :book

  def contents
      controller = BookController.new
      request = TestRequest.new
      response = TestResponse.new

      request.path = "/books/#{book.id}" # show action
      controller.process(request, response)
      response.body
  end
end

Then call page.contents will cause the BookController.show action to
be called which renders a page. The rendered page then would be
returned.

Is this the best way to do this?