如何在rake任务中渲染一个rabl视图?

时间:2012-04-03 19:11:22

标签: ruby-on-rails ruby-on-rails-3 rabl

我正在尝试将一个rabl视图渲染为一个rails 3.2 rake任务中的字符串。我将它呈现为字符串,以便通过Pusher从后台任务发送一些JSON。我从rake任务答案中查看了各种render_to_string,但它们似乎都没有工作。以下是我到目前为止的情况:

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 :: Template :: Error异常和错误“未定义的方法`参数'为nil:NilClass”。

1 个答案:

答案 0 :(得分:6)

通过调用Rabl::Renderer methods,有一种更简单的方法可以做到这一点。但是,当您尝试渲染某些内容时,上下文将很重要。因此,如果rabl文件中有任何控制器/辅助方法,请小心,因为它们在外面调用时将无法使用。以下是您可以使用的示例代码,使用Rabl 0.6.13进行测试。

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