【发布时间】:2015-12-14 14:13:57
【问题描述】:
我正在尝试使用 Snap 和 Heist 渲染模板。
我确定我的处理函数被正确调用(如果我用undefined 替换处理函数的内容,它会按预期失败。Debug.Trace.trace 也可以按预期工作)。
这个处理函数由一行组成:render "template"。但由于某种原因,我收到了 No handler accepted <url> 错误,而不是 template not found 或类似的错误。
我认为这里的问题是我将模板放在错误的目录中,但是无法知道在哪里搜索模板。所以我的问题是:
- 此错误消息是否具有误导性?它应该类似于
template not found: template.tpl - 我在哪里可以知道在哪些目录中搜索了模板?
我认为snap init 创建的快照应用程序是问题所在。我只是对其进行了轻微的修改:
- 我在
App记录中添加了一个字段:_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"
但由于某种原因,即使我在转到http://0.0.0.0:8000/myapp/submit 时看到rendering submit 打印到控制台,我还是收到No handler accepted "/hsnews/submit" 消息作为HTTP 响应(而不是呈现的模板)。我在snaplets/heist/myapp_templates 中有submit.tpl 和_submit.tpl。
【问题讨论】:
标签: haskell haskell-snap-framework heist