Есть ли полезный контекст рендеринга в sinatra/padrino?

Я пытаюсь использовать шаблон Exhibit в приложении padrino, но сделать это правильно, мне нужно получить доступ к контексту рендеринга. То есть мне нужен какой-то объект context, чтобы вызов чего-либо в соответствии со строками context.render('accounts/index') давал такой же вывод, что и при вызове render 'accounts/index' из контроллера (при условии, что все переменные установлены одинаково и что app/views/accounts/index.erb является файлом шаблона).

Я не могу найти ничего подобного в общедоступном API padrino, поэтому я попытался копнуть глубже. Существующий метод render в контроллере является оберткой для метода render Sinatra, который является частным методом экземпляра. Так что это явно не определено в классе MyApp (то есть в подклассе Padrino::Application). MyApp.new приводит к экземпляру Rack::Session::Cookie, а не самого себя, и ни один из методов padrino, которые я могу найти, не возвращает существующий экземпляр приложения, которое было бы подходящим кандидатом для объекта context, если бы я вызвал его закрытый метод render.

Это что-то, что по своей сути слишком сложно, чтобы возиться с дизайном Синатры и Падрино, или есть что-то, что я здесь упускаю?


person Carl Suster    schedule 05.07.2012    source источник


Ответы (1)


Я понимаю, что ответ был в книге Objects on Rails, если бы я только продолжал читать. Мне нужно было явно передать контекст из шаблона: exhibit(object, self) внутри шаблона вызывает передачу контекста рендеринга шаблона в качестве второго аргумента. Конечно.

Я предполагаю, что это действительно не было специфичным для падрино, и я искал что-то сложное, когда ответ был очень простым.

person Carl Suster    schedule 05.07.2012