Ruby on Rails導覽功能表自動產生的方法

來源:互聯網
上載者:User

最近在做的一個ROR的web項目中遇到如下問題:

產品可以按類分類導航瀏覽,主要可以分為A,B,C三類,三類之下還有其他分類,同時,基類和其下 的分類都可以由使用者擴充。從橫向上,主類可以由使用者擴充,縱向上,使用者也可以擴充。

類別資訊儲存與categories表中:

id:integer         主鍵

name:string        類別名稱

parentid:integer   類別的父類

要求:

產生導覽功能表,並且可以含有子類的菜單可以通過點擊展開或關閉,並且可以按類別導航產品。

實現Ruby on Rails導覽功能表:

通過深度優先遍曆來產生菜單,在便利過程中構建菜單的html編碼,主要是使用了一個@htmlmenu的 string來拼接產生的html代碼,最終顯示在頁面中。

Ruby on Rails導覽功能表代碼:

def index      @htmlmenu=""     @htmlmenu+= "< ul>"     @root = Category.find(:all,:conditions=>['parentid=0'])      @root.each { |item|      if Category.find_by_parentid(item.id)      @htmlmenu+= "< li>< a href='#ChildMenu#{item.id}' onclick=\"DoMenu('ChildMenu#{item.id}')\">"     else       @htmlmenu+= "< li>< a href='/categories/#{item.id}'>"     end     @htmlmenu+= item.name      @htmlmenu+= "< /a>"     buildmenu item      @htmlmenu+= "< /li>"     }      @htmlmenu+= "< /ul>"   end   private    def buildmenu category      @children = Category.find_all_by_parentid(category.id)      if @children.size!=0        @htmlmenu+= "< ul id='ChildMenu#{category.id}' class='collapsed'>"       @children.each { |item|          if Category.find_all_by_parentid(item.id).size!=0            @htmlmenu+= "< li>< a href='#ChildMenu#{item.id}' onclick=\"DoMenu('ChildMenu#{item.id}')\">"         else                 @htmlmenu+= "< li>< a href='/categories/#{item.id}'>"         end          @htmlmenu+= item.name          @htmlmenu+= "< /a>"         buildmenu item          @htmlmenu+= "< /li>"         }        @htmlmenu+= "< /ul>"     end   end

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.