日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
RubyonRails導航菜單自動生成的方法

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

站在用戶的角度思考問題,與客戶深入溝通,找到潮州網(wǎng)站設(shè)計與潮州網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、申請域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋潮州地區(qū)。

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

類別信息存儲與categories表中:

id:integer         主鍵

name:string        類別名稱

parentid:integer   類別的父類

要求:

生成導航菜單,并且可以含有子類的菜單可以通過點擊展開或關(guān)閉,并且可以按類別導航產(chǎn)品。

實現(xiàn)Ruby on Rails導航菜單:

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

Ruby on Rails導航菜單代碼:

 
 
 
  1. def index
  2.     @htmlmenu=""
  3.     @htmlmenu+= "< ul>"
  4.     @root = Category.find(:all,:conditions=>['parentid=0'])
  5.     @root.each { |item|
  6.     if Category.find_by_parentid(item.id)
  7.     @htmlmenu+= "< li>< a href='#ChildMenu#{item.id}' onclick=\"DoMenu('ChildMenu#{item.id}')\">"
  8.     else
  9.       @htmlmenu+= "< li>< a href='/categories/#{item.id}'>"
  10.     end
  11.     @htmlmenu+= item.name
  12.     @htmlmenu+= "< /a>"
  13.     buildmenu item
  14.     @htmlmenu+= "< /li>"
  15.     }
  16.     @htmlmenu+= "< /ul>"
  17.   end
  18.   private
  19.   def buildmenu category
  20.     @children = Category.find_all_by_parentid(category.id)
  21.     if @children.size!=0
  22.       @htmlmenu+= "< ul id='ChildMenu#{category.id}' class='collapsed'>"
  23.       @children.each { |item|
  24.         if Category.find_all_by_parentid(item.id).size!=0
  25.           @htmlmenu+= "< li>< a href='#ChildMenu#{item.id}' onclick=\"DoMenu('ChildMenu#{item.id}')\">"
  26.         else
  27.                 @htmlmenu+= "< li>< a href='/categories/#{item.id}'>"
  28.         end
  29.         @htmlmenu+= item.name
  30.         @htmlmenu+= "< /a>"
  31.         buildmenu item
  32.         @htmlmenu+= "< /li>"
  33.         }
  34.       @htmlmenu+= "< /ul>"
  35.     end
  36.     
  37.   end

遍歷方法為private的buildmenu方法。

說明:parentid=0是為了找到所有的基類,他們的parentid默認為0;

在代碼中需要加入css和js:

 
 
 
  1. < script type="text/javascript">
  2. function DoMenu(emid){
  3.     var obj = document.getElementById(emid);
  4.     obj.className = (obj.className.toLowerCase() == "expanded"?"collapsed":"expanded");
  5.  
  6. }
  7. -->
  8. < /script>
  9. < style>
  10.  ul.collapsed {
  11.  display: none;
  12. }
  13. < /style>

有關(guān)Ruby on Rails導航菜單的補充:

1.這是一個雛形,關(guān)于性能問題有以下幾點:

1.1  代碼可以優(yōu)化,有些比較判斷沒有必要,懶得去掉了:)

1.2  如果類別數(shù)據(jù)增多,如果擔心過多的數(shù)據(jù)庫訪問,可以把這些寫到程序初始化里去,不過缺點是新增的類別需要重啟服務(wù)器后可以生效

2.我覺得這個拿去做文件系統(tǒng)遍歷很好,而且可以直接生成html頁面~


網(wǎng)站名稱:RubyonRails導航菜單自動生成的方法
本文來源:http://www.5511xx.com/article/dheddjj.html