导航助手活动记录

时间:2011-02-02 21:07:18

标签: ruby-on-rails activerecord

我有点卡住了,可能没有正确理解AR。这就是我所拥有的:

module PagesHelper

  def page_loop(pages)
    output = ""

    pages.each do |page|
      output << "<li><a href=\"" << page.title << "\">" << page.title << "</a>"

      children = page.children

      if children.size > 0
        output << "<ul>"
        page_loop(children)
        output << "</ul>"
      end

      output << "</li>"
    end

    return output
  end

  def navigation_list
    parent_pages = Page.where("parent_page_id IS NULL").order("title")

    output = "<ul>"
    output << page_loop(parent_pages)
    output << "</ul>"
  end
end

然后是模型中的以下内容:

def children
  Page.where("parent_page_id = ?", id)
end

由于某种原因,它返回以下输出,其中我有两个页面,test,另一个页面,其parent_page_id设置为测试页面的id。

<ul><li><a href="test">test</a><ul></ul></li></ul> 

所以它正在获取下一个<ul>元素,但不会遍历页面。

我是否误解了AR方法?我期待那里有一个<li>元素。

1 个答案:

答案 0 :(得分:0)

尔加。傻臭虫。

  if children.size > 0
    output << "<ul>"
    output << page_loop(children)
    output << "</ul>"
  end

固定。