我正在尝试渲染一个包含href值为"javascript:#{mySmallJsSnippet}"
的链接的网页,其中mySmallJsSnippet
是一些Javascript,它将<script>
标记添加到当前页面{{1} }}
我对此有几个问题,但主要的一个是令人尴尬的简单:
给定路线 - 例如src="http://e.g.com/static/myFullJsFile.js"
- 如何将路径的URL呈现为字符串,以便将其嵌入StaticR myFullJsFile_js
?基本上,我不知道如何在我的处理程序代码中执行Yesod的模板渲染机制自动对每个mySmallJsSnippet
执行的操作。
我怀疑它与@{fooBaR}
和renderRoute
有关,但我没有正确使用joinPath
。到目前为止,我最好的猜测是从Foundation.hs导入joinPath
并将其作为App
的第一个参数传递 - 不要去。
我会继续寻找,但是得到一些帮助会很棒,因为我确信这对于有过Yesod经验的人来说很简单。
答案 0 :(得分:8)
您可以使用Yesod.Handler
中的getUrlRender
:
getUrlRender :: GHandler sub master (Route master -> Text)
在您的情况下,它将如下所示:
do render <- getUrlRender
let renderedUrl = render $ StaticR myFullJsFile_js
该功能会将您的类型安全Route
呈现为普通Text
,您可以插入,例如进入一个脚本。
这样您就会失去使用@{ ... }
提供的正确性保证,因此您应该在必要时依赖它。
Yesod Book中还有对此功能的描述。