为什么模板工具包不能聚合我的计数器?

时间:2013-03-28 15:43:56

标签: perl template-toolkit dancer

我正在制作一个简单的Dancer应用程序来记录一个人阅读过的书籍,但是在我的模板中显示一个人阅读了多少本书,我陷入了错误的绊脚石。我试图在读取实例的表格中进行排序,如果读者与列出的人员相同,则将1加到计数器中。

以下是模板的代码:

<ul class="people">
<% IF people.size %>
  <% FOREACH id IN people.keys.nsort %>
    <li><h2 style="display: inline;"><% people.$id.name %></h2><br />
    Born <% people.$id.birthday %><br />
    <% FOREACH reader IN readings.keys.nsort %>
      <% count = 0 %>
      <% IF readings.$reader.person_id == people.$id.id %>
        <% count = count + 1 %>
      <% END %>
    <% END %>
    <% count %>
  <% END %>
<% ELSE %>
  <li><em>Unbelievable.  No people here so far</em>
<% END %>
</ul>

然而,当我显示它时,数量只有1.有人知道我做错了什么,或者你需要更多代码吗?

感谢。

1 个答案:

答案 0 :(得分:3)

看起来您需要将count初始化从FOREACH reader循环中拉出来:

<% FOREACH id IN people.keys.nsort %>
  <li><h2 style="display: inline;"><% people.$id.name %></h2><br />
  Born <% people.$id.birthday %><br />
  <% count = 0 %>
  <% FOREACH reader IN readings.keys.nsort %>
    <% IF readings.$reader.person_id == people.$id.id %>
      <% count = count + 1 %>
    <% END %>
  <% END %>
  <% count %>
<% END %>