2012-04-03 47 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')