2012-07-05 57 views
1

我正在嘗試在padrino應用程序中使用Exhibit pattern,但爲了正確執行此操作,我需要訪問渲染上下文。也就是說,我需要有一些對象context,這樣調用context.render('accounts/index')行時的某些內容將產生與從控制器內部調用render 'accounts/index'(假設所有變量設置相同並且app/views/accounts/index.erb是模板文件)時相同的輸出。sinatra/padrino中是否有可用的渲染上下文?

我在padrino公共API中找不到任何內容,所以我試圖深入挖掘。控制器中現有的render方法包裝了sinatra的render方法,這是一種私有實例方法。所以在類別MyApp(即Padrino::Application子類)上顯然沒有定義。 MyApp.new產生Rack::Session::Cookie的一個實例而不是它本身,我找不到的padrino方法返回該應用的現有實例,如果我調用它的私有render方法,該方法將成爲context對象的合適候選。

難道這難道不會因給定sinatra和padrino的設計而困擾嗎?還是有些我在這裏失蹤的東西?

回答

1

我意識到答案是在Objects on Rails書中,如果只是我一直在閱讀。我需要從模板內部顯式傳遞上下文:模板內的exhibit(object, self)會導致模板的渲染上下文作爲第二個參數傳遞。當然。

我想這真的不是特定於padrino的,畢竟當我的答案非常簡單時,我正在尋找一些複雜的東西。

相關問題