如果客户端要求某个控制器操作,我想获取将要发送的html。但是,我想从服务器上执行此操作。我想将这个原始html存储在数据库中以供日后使用。怎么办呢?
编辑:我需要通过响应发送的附加内容,样式表,脚本等...
答案 0 :(得分:1)
您可以使用Ruby
中的NET::HTTP库来获取HTMLurl = URI.parse('http://www.example.com/index.html')
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) {|http|
http.request(req)
}
body_html = res.body
然后,您可以将body_html
保存到数据库对象中。
问题是这会返回客户端获取的html。在“真实”世界中,浏览器然后解析此HTML,然后对样式表,脚本,图像进行单独的HTTP get请求。您需要执行相同的操作,然后将它们存储在单独的数据库对象中。
这个问题为您提供了一些可能有助于解析部分的工具:Method to parse HTML document in Ruby?
警告之词:我怀疑你要做的事情会比你想象的要困难得多。对你真正想要完成的事情给出一些好的想法,如果这是达到目标的最佳方法。
答案 1 :(得分:0)
我希望我不必这样做,因为它似乎有点hacky,但这可以通过将所需的html放入部分,然后调用
来实现。render :partial => '/the/partial'
有关详细信息,请参阅此链接:
http://www.justinbritten.com/work/2008/10/rendering-rails-partials-in-a-model-or-background-task/
编辑:上面链接中描述的方法仅适用于Rails 3.对于rails 3,使用AbstractController实现渲染。