0

在 yesod 应用程序中,我想为将由graphviz呈现的图形创建 URL 属性,并且我想使用插值。理想情况下,

graphToDot nonClusteredParams { fmtNode = \ (n,l) -> 
     [ URL [whamlet| @{MyRoute ...} |]
   } g

当然,类型不匹配:

  • 的属性URL是纯的Text,但是whamlet是一元的(小部件)
  • 当我替换为 时shamlet,类型很好,但它不能插值:URL interpolation used, but no URL renderer provided

有没有简单的方法来解决这个问题?

4

1 回答 1

1

这有效:获取渲染函数(在 monad 中),并应用(在纯代码中)

render <- getUrlRender 
let d = graphToDot ... 
     [ URL $ render $ MyRoute ... ]

我在这里找到了这个,解决了类似的问题:https ://github.com/yesodweb/yesod/wiki/Using-type-safe-urls-from-inside-javascript

于 2015-03-23T03:06:20.077 回答