1

padrino アプリケーションでExhibit パターンを使用しようとしていますが、適切に使用するには、レンダリング コンテキストにアクセスする必要があります。つまりcontext、 の行に沿って何かを呼び出すと、 がコントローラー内から呼び出されcontext.render('accounts/index')た場合と同じ出力が生成されるようなオブジェクトが必要です (すべての変数が同じに設定され、それがテンプレート ファイルrender 'accounts/index'であると仮定します)。app/views/accounts/index.erb

padrino パブリック API 内でこれを行うものを見つけることができないため、より深く掘り下げようとしました。コントローラー内の既存のメソッドは、プライベート インスタンス メソッドであるrendersinatra のメソッドをラップします。したがって、クラス(つまり、サブクラス)renderで定義されていないことは明らかではありません。結果はそれ自体ではなくのインスタンスになり、私が見つけることができる padrino メソッドのどれもアプリの既存のインスタンスを返しません。これは、プライベートメソッドを呼び出した場合にオブジェクトの適切な候補になります。MyAppPadrino::ApplicationMyApp.newRack::Session::Cookiecontextrender

これは、特定のシナトラとパドリーノのデザインを気にするのが本質的に難しすぎるものですか、それとも私がここに欠けているものがありますか?

4

1 に答える 1

1

Objects on Rails の本を読み続けていれば、その答えがあったことに気づきました。テンプレート内からコンテキストを明示的に渡す必要がありました。テンプレートexhibit(object, self)内では、テンプレートのレンダリング コンテキストが 2 番目の引数として渡されます。もちろん。

結局のところ、これはパドリーノに固有のものではなかったと思います。答えが非常に単純であるのに、複雑なものを探していました。

于 2012-07-05T19:10:51.570 に答える