6

Rails 3.2 rake タスクで rabl ビューを文字列にレンダリングしようとしています。バックグラウンド タスクから 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 の未定義のメソッド `parameters'」というエラーが発生します。

4

1 に答える 1

6

Rabl::Renderer メソッドを呼び出すという、より簡単な方法があります。ただし、何かをレンダリングしようとすると、コンテキストが重要になります。したがって、rabl ファイル内にコントローラー/ヘルパー メソッドがある場合は注意してください。外部で呼び出した場合は使用できないためです。これは、Rabl 0.6.13 でテストされた、使用できるサンプル コードです。

Rabl::Renderer.json(@post, 'posts/show', :view_path => 'app/views')
于 2012-07-05T05:57:52.407 に答える