导航助手活动记录

问题描述:

我有点卡住了,可能不能正确理解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 

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

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

因此,它将获得下一个<ul>元素,但不会遍历页面。

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

Gah。愚蠢的错误。

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

固定。