2011-02-02 49 views
0

我有點卡住了,可能不能正確理解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>元素。

回答

0

Gah。愚蠢的錯誤。

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

固定。