Perlを用いたWebアプリ開発フレームワークのCatalystでアプリを作っているのだが、ViewにテンプレートツールキットのTTSiteを使用して、これはヘッダもフッタもCSSも全部自動でwrappingしてくれるし、Controllerのメソッドでtemplateを指定しなくてもPathから自動的にテンプレートファイルがレンダリングされるし、こりゃ便利だ、と思って使っていた。
しかし、このアプリの最後の仕上げとなる「入力したデータをCSVで保存する」というところでつまづいている。Catalyst::View::Download::CSVを使えば望みどおりダイアログが出て「このファイルを保存しますか?」と出る。それはViewディレクトリにDownload/CSV.pmというディレクトリ/ファイルを置くというインプリメンテーション。しかしViewディレクトリにTT以外のテンプレートを置いてしまうと、どうも他のメソッドがレンダリングされるときに、全部templateがMyApp::View::Download::CSV->processに流れてしまうのだ。手動でtemplateを指定しても、CSV->proccessに食われてしまう。そしてどの画面も真っ白。CSVの方を手動で出力しようとしても、TTSiteを使っている以上、どうしてもtemplateがwrappingされてしまう。う〜ん、行き詰まった。
これを読んで解決法が分かった方は大至急教えてください。粗品を進呈します。