渲染yesod小部件

时间:2012-03-08 13:56:55

标签: haskell yesod

我按照here

的说明操作

我创建了一个yesod项目,并使用defaultLayout呈现小部件:

You've just posted
<p>#{postedText}#{T.reverse postedText}
<hr>
<p><a href=@{MirrorR}>Get back

这是default-layout.hamlet:

$maybe msg <- mmsg
    <div #message>#{msg}
^{widget}
<footer>
    #{extraCopyright $ appExtra $ settings master}

问题是我希望只有一个链接到MirrorR,但我有两个,一个是Get back,另一个是<footer>的版权。

1 个答案:

答案 0 :(得分:3)

当你写:

<p><a ...>...

然后,Hamlet会看到一个免费的<p>代码,并围绕以下内容创建匹配的</p>代码。后面的内容是假定为有效的HTML 。因此呈现的是:

<p><a ...>...</p>

你想要写的是(注意缩进创建一个新的免费标签):

<p>
  <a ...>...

...或:

<p><a ...>...</a>

您的浏览器会将此呈现为两个链接,因为<a>元素未关闭(并且浏览器进入怪异模式并在此情况下启用HTML1兼容性内容):

<p><a href="foo">link1</p>
<p>link2</p>
<!-- implicit </a> at the end of the closest block level element -->

免责声明:我无法访问Yesod,无法验证此行为;我只假设它是基于问题中的观察结果。