2011-08-15 50 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控制檯獲取頁面內容的方法,這是最簡單的一種。 –

相關問題