1

我正在尝试在 padrino 应用程序中使用Exhibit 模式,但要正确执行此操作,我需要访问渲染上下文。也就是说,我需要一些对象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 方法都没有返回应用程序的现有实例,context如果我调用它的私有render方法,这将是该对象的合适候选者。

给定的 sinatra 和 padrino 的设计,这本质上是不是很难打扰,还是我在这里遗漏了什么?

4

1 回答 1

1

我意识到只要我继续阅读,答案就在 Objects on Rails 书中。我需要从模板内显式传递上下文:exhibit(object, self)在模板内部会导致模板的渲染上下文作为第二个参数传递。当然。

我想这毕竟不是特定于帕德里诺的,当答案非常简单时,我正在寻找一些复杂的东西。

于 2012-07-05T19:10:51.570 回答