gpt4 book ai didi

yesod - 尝试使用 hamlet 在 yesod 中发送电子邮件

转载 作者:行者123 更新时间:2023-12-01 09:34:48 28 4
gpt4 key购买 nike

我正在 Yesod (0.10) 中构建一个调查站点,但我迷失在这些类型中。这是我正在尝试做的事情的简化版本。

invitation url = do
render <- getUrlRender
return $ renderHtml [hamlet|
<p>Dear foo, please take our
<a href=@{ShowSurveyR url}>survey.
|] render

另一个函数将调用它以期获得可以从 Network.Mail.Mime 传递给 simpleMail 的内容。上面的函数给出类型错误:

Handler/Root.hs:404:13:
The function `renderHtml' is applied to two arguments,
but its type `Html -> LT.Text' has only one

这很令人困惑,因为模板教程似乎是这样处理的。但是如果我像这样修改代码......

invitation url = do
return $ renderHtml [hamlet|
<p>Dear foo, please take our
<a href=@{ShowSurveyR url}>survey.
|]

我收到此类型错误。

Handler/Root.hs:403:24:
The lambda expression `\ _render[a4TO] -> ...' has one argument,
but its type `Html' has none
In the first argument of `renderHtml', namely

我认为 renderHtml 函数使用不当,但我找不到正确的函数是什么。有谁知道我错过了什么?我应该如何将路由功能传递到我的 hamlet 代码中?

最佳答案

准引用 ([hamlet|...|]) 返回一个函数,其参数也是一个函数。您必须首先应用该准引用值,并将结果传递给 renderHtml:

[编辑:正如@MattoxBeckman 发现的那样,另一个问题是需要使用 getUrlRenderParams 而不是 gutUrlRender。]

invitation url = do
render <- getUrlRenderParams
return $ renderHtml $ [hamlet|
<p>Dear foo, please take our
<a href=@{ShowSurveyR url}>survey.
|] render

(注意附加的 $)。

附言renderHtml 是 Html -> Text 类型,而准引用的结果 [hamlet|..|]Render url -> Html。您看到的第一条错误消息指出您试图将两个参数传递给 renderHtml,而第二条错误消息指出您没有将任何参数传递给 quasiquote 值。

关于yesod - 尝试使用 hamlet 在 yesod 中发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10080459/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com