- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Snap 和 Heist 呈现模板。
我确信我的处理函数被正确调用(如果我用 undefined
替换处理函数的内容,它将按预期失败。Debug.Trace.trace
也按预期工作)。
这个处理函数由一行组成:render "template"
.但出于某种原因,我得到了 No handler accepted <url>
错误而不是 template not found
或类似的东西。
我认为这里的问题是我将模板放在了错误的目录中,但无法知道在哪里搜索模板。所以我的问题是:
template not found: template.tpl
的东西我认为 snap init
创建的 snap 应用程序是问题所在。我只对它做了轻微的修改:
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"
但出于某种原因,即使我看到了 rendering submit
当我转到 http://0.0.0.0:8000/myapp/submit
时打印到控制台, 我得到 No handler accepted "/hsnews/submit"
消息作为 HTTP 响应(而不是呈现的模板)。我有submit.tpl
和 _submit.tpl
在 snaplets/heist/myapp_templates
.
最佳答案
1.: 我同意渲染模板应该有两种不同类型的错误。遗憾的是,据我所知情况并非如此。
2.: 简答: 使用的目录写在你的 heistInit 函数中。例如
h <- nestSnaplet "" heist $ heistInit "templates"
表示可以访问“snaplets/heist/templates/”中的所有文件,包括子目录。
长答案:
抢劫目录结构的默认行为如下:所有 .tpl 文件都可以从 snaplet/heist/templates/目录访问。含义
addRoutes [("template", render "template")]
将访问文件
snaplets/heist/templates/template.tpl
可以通过url访问到
http://localhost:8000/template
您也可以使用子目录,例如:
addRoutes [("users", render "users/index")]
path = snaplets/heist/templates/users/index.tpl
url = http://localhost:8000/users
要修改此行为,您可以调整 heistInit 函数。
假设您希望目录路径为“snaplets/heist/”而不是“snaplets/heist/templates/”
简单地改变:
h <- nestSnaplet "" heist $ heistInit "templates"
为此:
h <- nestSnaplet "" heist $ heistInit ""
heistInit 的参数是你的 tpl 文件的目录位置。因此,您可以根据需要进行调整。
我希望这能回答您的问题。
关于haskell - 抢劫 : why my template is not rendered?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20863979/
我正在尝试使用 Snap 和 Heist 呈现模板。 我确信我的处理函数被正确调用(如果我用 undefined 替换处理函数的内容,它将按预期失败。Debug.Trace.trace 也按预期工作)
我是一名优秀的程序员,十分优秀!