我试图在padrino应用程序中使用Exhibit pattern,但要正确地执行此操作,我需要访问渲染上下文。也就是说,我需要有一些对象context
,这样调用context.render('accounts/index')
行的内容会产生相同的输出,从控制器内部调用render 'accounts/index'
时(假设所有变量都是设置相同,app/views/accounts/index.erb
是模板文件。)
我在padrino公共API中找不到任何这样的东西,所以我试图深入挖掘。控制器中现有的render
方法包装了sinatra的render
方法,这是一种私有实例方法。所以它显然没有在类MyApp
上定义(即Padrino::Application
子类)。 MyApp.new
导致Rack::Session::Cookie
的实例而不是自身,并且我找不到任何padrino方法都会返回应用程序的现有实例,这将是{{1}的合适候选者}如果我调用它的私有context
方法。
对于给出的sinatra和padrino的设计来说,这本身就太难以打扰了,还是我在这里缺少某些东西?
答案 0 :(得分:1)
我意识到答案是在“对象上的轨道”一书中,如果我只是继续阅读的话。我需要在模板中显式传递上下文:模板内的exhibit(object, self)
导致模板的渲染上下文作为第二个参数传递。当然。
我想这毕竟不是特定于padrino,而且当答案非常简单时,我正在寻找复杂的东西。