代码之家  ›  专栏  ›  技术社区  ›  Simon

如何在不访问网页的情况下获取控制器操作的呈现输出?

  •  1
  • Simon  · 技术社区  · 15 年前

    作为Rails2.3应用程序部署过程的一部分,我想将错误页面的静态版本保存到公用文件夹中。如何在不访问网页的情况下获取控制器操作的呈现输出?我知道这是可以做到的,因为功能测试可以做到——如果我说

    get :errors, :id => 404
    

    然后主体在@response.body中。我想我可以从actionController::testcase中复制代码,但是我希望有一种更简单的方法来完成它。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Simon    15 年前

    def get_content host, path, filename
      request = ActionController::Request.new 'HTTP_HOST' => host,
                                              'REQUEST_URI' => path,
                                              'REQUEST_METHOD' => 'GET',
                                              'rack.input' => '',
                                              'rack.url_scheme' => 'http'
    
      controller = ActionController::Routing::Routes.recognize(request).new
      response = ActionController::Response.new
      controller.process request, response
      return response.body
    end