Snap と Heist を使用してテンプレートをレンダリングしようとしています。
ハンドラー関数が正しく呼び出されていると確信しています (ハンドラー関数の内容を に置き換えるとundefined
、期待どおりに失敗します。Debug.Trace.trace
また、期待どおりに動作します)。
このハンドラー関数は、次の 1 行で構成されますrender "template"
。しかし、何らかの理由No handler accepted <url>
で、またはそのようなものの代わりにエラーが発生template not found
しています。
ここでの問題は、テンプレートを間違ったディレクトリに配置していることだと思いますが、テンプレートが検索された場所を知る方法はありません。だから私の質問は:
- このエラー メッセージは誤解を招くものではありませんか? それは次のようなものだったはずです
template not found: template.tpl
- テンプレートを検索するディレクトリはどこで確認できますか?
によって作成されたスナップアプリケーションが問題だと思いますsnap init
。私はそれにわずかな変更を加えただけです:
App
記録するフィールドをもう 1 つ追加しました。_myapp :: Snaplet Myapp
app
初期化関数で、次を追加しました:n <- embedSnaplet "myapp" myapp myappInit
n をレコードに渡しました。- 新しいファイルを作成しまし
src/Myapp.hs
た。
の関連部分は次のMyapp.hs
とおりです。
myappInit = do
...
h <- nestSnaplet "" heist $ hesitInit "myapp_templates"
addRoutes routes
...
routes = [ ("/submit", submitHandler) ]
submitHandler = trace "rendering submit" $ render "submit"
しかし、何らかの理由で、rendering submit
に移動したときにコンソールに出力されているのに、 (レンダリングされたテンプレートではなく) HTTP 応答としてメッセージhttp://0.0.0.0:8000/myapp/submit
を取得します。No handler accepted "/hsnews/submit"
私はsubmit.tpl
と_submit.tpl
を持っていsnaplets/heist/myapp_templates
ます。