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?