尝试为以前的帖子创建templateData帮助函数

时间:2014-03-27 17:19:25

标签: docpad

我想创建一个templateData辅助函数来创建类似于功能的小部件。 我已成功创建了一个小部件,用于为相关帖子生成HTML代码,但我正在努力创建帮助以创建先前的帖子小部件。

我的帮助函数第一次调用getCollection(' posts')来创建帖子列表,然后尝试逐步执行每个项目构建一个排序列表 - 就像bootstrap框架代码在pages / posts.html上做的那样.eco页面。我的问题是,在按排序列表构建时,我得到一个插入的逗号','看看从渲染页面中提取的html:

<nav class="linklist">
  <ul>
    <li><a href="/posts/bye">A Goodbye Blog Post</a></li>,
  </ul>                 
</nav>

在templateData下的docpad.coffee中定义的辅助函数是:

getPriorPostsWidget: (widgetName) ->      
  if @getCollection('posts').length
    pPosts = @getCollection('posts').toJSON()
    myInner = for priorPost in pPosts
      if @document.url != priorPost.url
        """
        <li>
          <a href="#{priorPost.url}">#{priorPost.title}</a>
        </li>
        """

    return """
      <aside id="prior-posts">
        <h3 class="widget-title">#{widgetName}</h3>
        <nav class="linklist">
          <ul>
            #{myInner}
          </ul>                 
        </nav>
     </aside>
     """        

最后插入.eco布局文件

<%- @getPriorPostsWidget("Prior Posts") %> 

Code尝试调试时有点乱,但我现在已经没有想法,并且认为我可以寻求帮助,因为我显然缺少一些重点。

  

更新:好的,这一定是漫长的一天,我的错误相当愚蠢。我假设的是一个字符串是一个字符串数组,array.tostring的默认处理是插入&#39;,&#39;。将#{myInner}更改为#{myInner.join(&#39;&#39;})可以解决问题!

科林

1 个答案:

答案 0 :(得分:0)

问题是myInner是一个数组,而不是一个字符串。数组的默认处理 - &gt; String是添加','字符。解决方案是使用join('')将数组与空格连接。