2011-12-28 1 views
1

特定のテンプレート(actions.tt)で使用するparamsを返すpostルートがあります。そのテンプレート内で、DirectoryViewプラグインを使用してディレクトリのビュー(dirmain.tt)をdivにロードします(jQueryを使用)。私の問題は、メインテンプレート(action.tt)をレンダリングする前に、DirectoryViewテンプレートにパラメータを渡す必要があることです.param(dev)をDirectoryリストに含める必要があります。Dancer、Dancer :: Plugin :: DirectoryView、テンプレートツールキット、テンプレート内の共有パラメータ

Perlの部分:

Use Dancer; 
.... 
post "/" => sub { 
template 'actions.tt', { 
    'dev' => param('dev'), 
}; 

テンプレート:ある種のフックを使用して

actions.tt

.... 
<div id="dir"> 
    <script type="text/javascript"> 
      $('#dir').load('/files/[% dev %]'); 
    </script> 
</div> 
.... 

dirmain.tt

.... 
how do I pass [% dev %] here before the action.tt is rendered by the browser? 
.... 

でしょうが、これを満たしますか? あなたのご協力が大変ありがとうございます。ありがとう!

+0

「レンダリング済み」?ブラウザで?あるいは 'actions.tt'がPerlでコンパイルされる前に(あまり意味がないでしょう)?とにかく、私はダンサーを知らないのですが、あなたのテンプレートの 'session-> uri()'にアクセスしたいと思っています(何とかアクセスするための設定)。何らかの理由でうまく動作しない場合は、 load( '/ files/[%dev%]?x = [%dev%]') 'を要求し、' param "x" 'を使用するときに' dev 'ちょっとしたランダムな考え。 – Qtax

+0

@ Qtax私は混乱する部分を編集しました。私はヒントを感謝し、私はDirectoryViewモジュールに必要なものを定義しました。ありがとう! – vpaterno

答えて

2

paramsはハッシュを配信する関数なので、params( "dev")は何も取得できません。これは良いです:

template 'actions.tt', { 
    'dev' => param->{dev}, 
} 

が、ダンサーで

、パラメータ、リクエストやセッションのようないくつかの変数がテンプレートにデフォルトでエクスポートされています。テンプレートの後に{}を空白のままにして、テンプレートでこれを使用できます。

$('#dir').load('/files/[% params.dev %]'); 
+0

チップをありがとう! – vpaterno

関連する問題