Как сделать представление Рабл в грабли? - PullRequest
5 голосов
/ 03 апреля 2012

Я пытаюсь визуализировать представление rabl в string в рейке 3.2.Я передаю его в строку, чтобы послать JSON через Pusher из фоновой задачи.Я посмотрел на различные render_to_string из ответов на задачи rake, но ни один из них, похоже, не работает.Вот что у меня пока есть:

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 Ответ

6 голосов
/ 05 июля 2012

Существует более простой способ сделать это, вызвав методы Rabl :: Renderer .Однако ваш контекст будет иметь значение, когда вы попытаетесь что-то сделать.Поэтому будьте осторожны, если в ваших файлах rabl есть какие-либо методы контроллера / помощника, потому что они не будут доступны при вызове его извне.Вот пример кода, который вы можете использовать, протестированный с Rabl 0.6.13.

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