2011-08-15 57 views
2

我需要能够捕获一个控制器动作的输出作为一个字符串 - 你会认为这将是一件相对容易的事情,但我不能得到任何render/render_to_string方法上班。捕获控制器动作的输出

我需要能够存储控制器和动作的引用,然后能够抓住它的输出进一步在一个进程(实际上是服务器端打印)

任何想法 - 谢谢?

使用渲染/ render_to串等(在模型)

view = ActionView::Base.new(ActionController::Base.view_paths) 
view.extend ApplicationHelper 
output = view.render(:action => '<someaction>', :controller => '<somecontroller') 

这导致;

/Users/---/gems/activesupport-3.0.5/lib/active_support/whiny_nil.rb:48:in `method_missing': undefined method `formats' for nil:NilClass (NoMethodError) 

如果我尝试使用render_to_string我得到;

undefined method `render_to_string' for #<ActionView::Base:0x0000010400c760> (NoMethodError) 
+0

给你带路使用'render_to_string' – fl00r

+0

可能重复[如何获取控制器的动作的呈现输出,而无需访问网页?](http://stackoverflow.com/questions/4106724/how-do-i-get-the-rendered-output-没有访问我们) – Simon

回答

1

为什么不使用卷曲?

curl http://localhost:3000/controller/action 

使用卷曲宝石,你可以从控制台甚至称之为:

require 'curl' 
page = CURL.new.get('http://localhost:3000/controller/action') 

UPDATE

从铁轨控制台:

app.get('/controller/action') 
app.response.body 
+0

这可能是一个选项 - URL是受保护的,尽管如此将不得不从本地克服本地连接 –

+0

好吧,看看我的更新。有几种直接从Rails控制台获取页面内容的方法,这是最简单的一种。 –

相关问题