2012-04-03 49 views
5

我試圖呈現一個拉爾視圖在rails 3.2 rake任務中的字符串。我將它渲染爲字符串以便通過後臺任務發送一些JSON通過Pusher。我從耙子任務答案看過各種render_to_string,但它們都不起作用。以下是我迄今:如何在rake任務中渲染rabl視圖?

controller = PostsController.new 
av = ActionView::Base.new(MyApp::Application.config.paths['app/views'].first,{},controller) 
@post = post 
Pusher["some channel"].trigger('new_post', av.render(:template => 'posts/show.json.rabl')) 

有了這次嘗試,我得到一個::的ActionView ::模板錯誤異常和錯誤「的零未定義的方法`參數:NilClass」。

回答

6

有一個更簡單的方法來做到這一點,通過調用Rabl::Renderer methods。然而,當你嘗試渲染某些東西時,你的上下文將很重要因此,如果rabl文件中有任何控制器/幫助程序方法,請小心,因爲它們在外部調用時不可用。以下是您可以使用的示例代碼,使用Rabl 0.6.13進行測試。

Rabl::Renderer.json(@post, 'posts/show', :view_path => 'app/views')