2012-04-03 9 views
5

Ich versuche, eine Rabl-Ansicht zu string in einem Rails 3.2 Rake Aufgabe zu rendern. Ich rende es in eine Zeichenkette, um JSON durch Pusher von einer Hintergrundaufgabe zu senden. Ich habe verschiedene render_to_string aus Rake-Task-Antworten betrachtet, aber keine von ihnen scheint zu funktionieren. Hier ist, was ich habe bisher:Wie render rabl in einer Rake-Aufgabe?

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')) 

Mit diesem Versuch ich eine ActionView erhalten :: Template :: Fehler Ausnahme und dem Fehler „nicht definierte Methode` Parameter für Null: NilClass“.

Antwort

6

Es gibt eine einfachere Möglichkeit, das zu tun, indem Sie Rabl::Renderer methods anrufen. Ihr Kontext spielt jedoch eine Rolle, wenn Sie versuchen, etwas zu rendern. Seien Sie daher vorsichtig, wenn es in Ihren rabl-Dateien Controller-/Hilfsmethoden gibt, da diese nicht verfügbar sind, wenn Sie sie außerhalb aufrufen. Hier ist ein Beispielcode, den Sie verwenden können, getestet mit Rabl 0.6.13.

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