如何从WidgetT站点m()获取Html?

时间:2016-11-08 10:31:02

标签: haskell yesod

我正在使用Mail构建import Network.Mail.Mime.SES,我的电子邮件的HTML部分需要Html值。

我可以像这样Html

import Text.Blaze.Html.Renderer.Utf8 (renderHtml)

emailHtml :: Html
emailHtml = renderHtml $(shamletFile "templates/email.hamlet")

但是,我使用的模板应该引用静态文件。我想用@{StaticR img_myimage_jpg}引用它,但使用这样的网址不能用于 shamlet 。相反,我认为我需要使用 whamlet ,但如果我将whamletFilerenderHtml一起使用,则会出现编译错误。

使用whamletFile会产生此编译器错误:

Handler/Proxy.hs:71:55:
    Couldn't match expected type `blaze-markup-0.7.1.0:Text.Blaze.Internal.MarkupM
                                    ()'
                with actual type `WidgetT site12 m12 ()'
    In a stmt of a 'do' block:
      (asWidgetT GHC.Base.. toWidget)
        ((blaze-markup-0.7.1.0:Text.Blaze.Internal.preEscapedText
          GHC.Base.. Data.Text.pack)
           "</pre>\n\
           \</td>\n\
           \</tr>\n\
           \</table>\n\
           \</td>\n\
           \</tr>\n\
           ... (many more lines)

使用hamletFile会产生此编译器错误:

Handler/Proxy.hs:71:53:
    Couldn't match expected type `t0
                                  -> blaze-markup-0.7.1.0:Text.Blaze.Internal.MarkupM ()'
                with actual type `blaze-markup-0.7.1.0:Text.Blaze.Internal.MarkupM
                                    ()'
    The lambda expression `\ _render_aoYP -> ...' has one argument,
    but its type `Html' has none
    In the first argument of `renderHtml', namely
      `\ _render_aoYP
         -> do { GHC.Base.id
                   ((blaze-markup-0.7.1.0:Text.Blaze.Internal.preEscapedText
                     GHC.Base.. Data.Text.pack)
                      "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n\

0 个答案:

没有答案