手动呈现路线的URL

时间:2013-03-29 22:09:24

标签: haskell yesod

我正在尝试渲染一个包含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经验的人来说很简单。

1 个答案:

答案 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中还有对此功能的描述。