在Rails中如何在不发出HTTP请求的情况下获取页面内容?

时间:2010-01-11 14:00:10

标签: ruby-on-rails

这可能非常明显,但在rails中如何在不发出HTTP请求的情况下获取页面内容?

即。我想在同一台服务器上的脚本中获取我的rails应用程序生成的任何页面的内容。对于HTTP请求,这当然是微不足道的,但是我怎么能得到页面的内容呢?

这就是我现在正在做的工作正常:

require 'open-uri'

contents = open("http://localhost/path_to_my_page").read # but I really want to get rid of the overhead of the HTTP request

我需要能够从rails应用程序中的脚本执行此操作,而不是控制器(例如使用render_to_string)

3 个答案:

答案 0 :(得分:3)

这是您在控制台中获取页面内容的方式。它可能适合你:

require 'action_controller/integration'
app = ActionController::Integration::Session.new;
app.get('/path_to_your_page')
puts app.response.body

答案 1 :(得分:1)

在您的控制器中,您可以拨打render_to_string而不是render,然后返回页面而不是发送到浏览器。
两种方法的参数都是相同的,因此您需要指定渲染所需的控制器和操作。

答案 2 :(得分:0)

为什么不直接使用erb?有关详细信息,请参阅this question