Ruby on Rails导航菜单自动生成的方法

最近在做的一个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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索导航
, item
, 菜单
, 类别
, category
, children
tocify菜单生成器
js 递归生成导航菜单、ruby on rails、ruby on rails 教程、ruby rails、ruby on rails pdf,以便于您获取更多的相关知识。

时间: 2024-09-09 13:05:04

Ruby on Rails导航菜单自动生成的方法的相关文章

使用Ruby on Rails和PostgreSQL自动生成UUID的教程_ruby专题

Rails 4 能原生态的支持Postgres 中的UUID(Universally Unique Identifier,可通用的唯一标识符)类型.在此,我将向你描述如何在不用手工修改任何Rails代码的情况下,用它来生成UUID. 首先,你需要激活Postgres的扩展插件'uuid-ossp':   class CreateUuidPsqlExtension < ActiveRecord::Migration def self.up execute "CREATE EXTENSION

FCKeditor 自定义上传目录和自动生成文件名方法

FCKeditor 自定义上传目录和自动生成文件名方法 使用用FCKeditor的上传功能,我们会发现上传后的文件名和本地的是一样的,不会自动更改文件名,这样有时候本地是中文文件名的时候就不是太好了.下面是我对FCKeditor.NET源文件的修改,使上传文件自动生成随机文件名,而且上传目录根据当前时间归类,这样方便管理! 下面使用的是FCKeditor.NET 2.6.3 版. 1.根据当前时间设置上传目录 打开FileBrowserConfig.cs文件,在119行(userFilesPat

利用.net控件实现下拉导航菜单制作的具体方法

这篇文章介绍了利用.net控件实现下拉导航菜单制作的具体方法,有需要的朋友可以参考一下,希望对你有所帮助   今天的一个小测试是老师让用.NET用控件来制作一个拉菜单要求如下: 将鼠标移到父菜单上弹出3个子菜单,而且每个子菜单都有超链接. 以下是我自己做的代码: 复制代码 代码如下:     <asp:Menu ID="Menu1" runat="server" Orientation="Horizontal" Width="10

java-eclipse有个快捷键能在主函数中选中数行代码自动生成一个方法

问题描述 eclipse有个快捷键能在主函数中选中数行代码自动生成一个方法 看视频发现的,百度不到,求问.. 举个例子啊, 初始: public static void main (String arg[]) { AAA; BBB; CCC; } 这样的代码,选中ABC这三行,摁了某个快捷键变成了: public static void main(String arg[]) { save(); } private static void main(){ AAA; BBB; CCC; } 跪求大神

在Ruby on Rails上使用Redis Store的方法_ruby专题

Redis Store 是一个专为Ruby应用程序服务的工具包,原生就支持分片,主从复制,编组以及超时和命名空间.此外,在Ruby on Rails上使用它也是非常的简单. 如何使用:对于在Rails上使用Redis Store,首先我们需要在Gemfile文件中添加入口   gem 'redis-rails' gem 'redis-rack-cache' # optional 然后我们就会有如下选择: ## Cache Store # config/environments/productio

下拉菜单自动生成,还有类似163添加附件的形式

下面为效果显示 '); function showItems(n) { var item_disp = ""; for(var i=0; i Link to : '; } no_options=n; this.document.all.items.innerHTML = item_disp; } if(navigator.appName=="Microsoft Internet Explorer") { no_options = this.document.qiks

利用.net控件实现下拉导航菜单制作的具体方法_实用技巧

今天的一个小测试是老师让用.NET用控件来制作一个拉菜单要求如下: 将鼠标移到父菜单上弹出3个子菜单,而且每个子菜单都有超链接. 以下是我自己做的代码: 复制代码 代码如下:     <asp:Menu ID="Menu1" runat="server" Orientation="Horizontal" Width="100%"             Font-Size="14px" ForeCol

JS实现自动变化的导航菜单效果代码_javascript技巧

本文实例讲述了JS实现自动变化的导航菜单效果代码.分享给大家供大家参考.具体如下: 自动变化的JS导航菜单,按照时间自动切换,有需要的参考一下. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-auto-cha-nav-menu-style-codes/ 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww

开发新手最容易犯的50个 Ruby on Rails 错误(1)

[编者按]本文最早发布与 JETRuby 博客,主要介绍了开发新手最容易犯的 Ruby 错误.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 一年前,我们创立了以 "Rubyboost" 为名的 Ruby on Rails 课程.简而言之,本课程的目标是使对编程了解不多的新手也能在两个月内,提升技能.成为初级开发者.在成功完成课程之后,学生会收到为其两个月的实习邀请,实习地点就在我们公司.如果一切顺利,就会得到聘用.不得不说,这是一种相对公平且简单的成为职业开发者的道路,你觉