`
cjyzpcl
  • 浏览: 33956 次
  • 性别: Icon_minigender_1
  • 来自: Charlotte
社区版块
存档分类
最新评论

二级联动菜单在Rails中的实现。

阅读更多

    本文参考了一些网上的相关资料。

    二级联动菜单即是第二级菜单根据第一级菜单的选择进行相应的改变。

    Rails实现如下,首先是View中的相关代码:

xml 代码
  1. <tr>    
  2.                 <td bgcolor="#FFFFFF">居住地区:<span class="alarm">*span>td>  
  3.                 <td bgcolor="#FFFFFF">  
  4.                 <%= select(:city, :name, @cities, {}, { "onchange" => remote_function(   
  5.                     :with => "'parent_id='+value",   
  6.                     :update => 'next_select',   
  7.                     :url => { :action => :select_with_ajax } ) })%>  
  8.                      
  9.                 <span id='next_select'>span>  
  10.                   select>   <span class="gray">正确填写可以帮你快速找到同城的宝宝和信息。span>td>  
  11.               tr>  

    需要注意的一点是select中的第四个参数 {} 是必须保留的,网上很多没有成功的例子就是忽略了这个。因为Rails API中select方法的定义是这样的:select(object, method, choices, options = {}, html_options = {})。

    controller中的方法如下:

ruby 代码
  1. def select_with_ajax       
  2.     @areas = City.find(:all:conditions => ["parent_id = ?", params[:parent_id]]).collect { |city| [city.name, city.id] }   
  3.     render(:layout => false)    
  4.   end  

    这里根据参数中传递的parent_id生成2级列表。

    select_with.ajax.rhtml代码如下:

ruby 代码
  1. <%= select(:area:name@areas) %>  

    这样就简单在Rails中实现了二级联动菜单。

分享到:
评论
3 楼 simon_lin 2007-10-08  
级联的搞定了:),参考了cjyzpcl兄弟和这篇文章
http://www.3code.cn/post/show/4

      <%= select(:category, :name, @categories, {}, { "onchange" => remote_function(   
                    :with => "'category_parent_dn='+value",   
                    :update => 'next_select1',   
                    :url => { :action => :select_with_ajax } ) })%>
                   
<span id='next_select1'></span> 


不过有个问题,级联的值怎么取呀?不管你是二级还是多级的级联,提交后的值怎么取?因为如果是多级的话,你没办法知道是那个控件提交过来的呀:(
谁知道或做过,多谢?
2 楼 simon_lin 2007-09-28  
看了cjyzpcl兄弟的帖子后,我如下操作,请教各位哪里出了问题?

1、首先建一个cities的表。结构如下:
id int not null auto_increment,
name varchar(50) not null,
parent_id int not null.
2、利用generate script生成一个controller,比如city.在city controller中加入select_with_ajax方法,相应的select_with_ajax.rhtml中填入
<%= select(:area, :name, @areas) %>
3、这里还有一段(原文贴出来的时候就漏了一些标签:(,有谁来补一下?),另外这一段不知放在什么文件?是否还需要加什么方法吗?

<tr>    
                <td bgcolor="#FFFFFF">居住地区:<span class="alarm">*span>td>  
                <td bgcolor="#FFFFFF">  
                <%= select(:city, :name, @cities, {}, { "onchange" => remote_function(   
                    :with => "'parent_id='+value",   
                    :update => 'next_select',   
                    :url => { :action => :select_with_ajax } ) })%>  
                     
                <span id='next_select'>span>  
                  select>   <span class="gray">正确填写可以帮你快速找到同城的宝宝和信息。span>td>  
              tr>  
1 楼 toostupid 2007-07-23  
收藏了!

相关推荐

    Rails中应用Ext.tree:以中国的省市地区三级联动选择为例

    在Ruby on Rails(Rails)框架中,开发人员经常需要实现各种用户交互功能,例如三级联动选择,这在处理地理区域数据时尤其常见。本篇我们将深入探讨如何在Rails应用中利用Ext.js库的tree组件来创建一个中国省市地区...

    在Rails中使用SSL

    在Rails中使用SSL(安全套接层)是构建Web应用时确保数据传输安全的重要步骤。Rails框架支持在应用程序中轻松集成SSL,以保护用户敏感信息,如登录凭据和支付详情。以下是一些关于在Rails中实施SSL的关键知识点: 1...

    在rails中 使用RSpec生产CHM文档

    标题 "在Rails中使用RSpec生产CHM文档" 暗示了这个话题是关于如何在Ruby on Rails(简称Rails)框架中使用RSpec测试工具来创建帮助文档,特别是以CHM(Microsoft Compiled HTML Help)格式。CHM文件是一种常见的...

    Ruby on Rails中文指南

    7. **哈希与符号化键(Hashes and Symbolized Keys)**:在Rails中,使用符号作为哈希键可以提高性能,因为符号是不可变的,且在内存中只存储一次。 8. **部分视图(Partials)**:部分视图是可重用的视图代码块,...

    RailsGuides中那个blog程序源码

    在Rails中,**模型(Model)** 负责处理数据和业务逻辑,通常与数据库交互。在这个"blog"程序中,可能会有一个`Post`模型来代表博客文章,包含了如标题、内容、作者等属性,并提供相关的操作,如创建、更新、删除...

    shoppe-example, 在 Rails 中使用Shoppe平台的示例存储实现.zip

    shoppe-example, 在 Rails 中使用Shoppe平台的示例存储实现 这是一个 Rails 应用程序,它使用 Shoppe 构建。 它具有一个可以爱的设计,以充分演示Shoppe平台提供的功能以及它在 Rails 应用程序中的。 正在启动要开始...

    使用Aptana+Rails开发Rails Web应用(中文)

    安装过程中,遵循提示进行,确保选择自定义安装并勾选Rails相关的插件,以便在Aptana中获得对Rails的全面支持。 安装完成后,打开Aptana Studio,创建一个新的Rails项目。在“File”菜单中选择“New”然后点击...

    Rails 101 入门电子书

    - 如何在Rails中实现RESTful接口。 - **案例分析**: - 分析一个典型的RESTful应用示例。 #### 九、练习作业2-在Group里面发表文章-双层RESTFul - **目标**: - 在Group中添加Post功能。 - **实现过程**: - 创建...

    Rails 中mongrel的安装

    在Rails项目中安装Mongrel通常通过RubyGems进行,这是一个Ruby的包管理器。首先确保RubyGems已经安装,然后在命令行执行以下命令: ```bash gem install mongrel ``` 安装完成后,可以通过`mongrel_rails`命令来...

    Ruby-Knock为RailsAPI实现无缝JWT身份验证

    在描述中提到的"Knock"是一个专门为Rails API设计的库,它帮助开发者实现JSON Web Token(JWT)的身份验证,这是一种安全的身份验证机制,适用于无状态API。 JWT是一种轻量级的认证协议,它允许服务器向客户端发送...

    rails中使用javascript日期控件

    这篇博文“rails中使用javascript日期控件”探讨了如何在Rails应用中集成和使用JavaScript日期选择器,以实现更高效、友好的前端交互。 首先,我们需要了解JavaScript日期控件的基本概念。JavaScript是一种在客户端...

    Rails101_by_rails4.0

    此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...

    Struts2和Rails的国际化实现

    以下是如何在Rails中实现国际化: 1. **创建翻译文件**:在`config/locales`目录下,为每种语言创建一个对应的YAML文件,例如`en.yml`(英语)和`zh-CN.yml`(简体中文)。 2. **定义翻译键值对**:在这些YAML文件...

    rails-assets, 在 Rails 中,资产管理的解决.zip

    rails-assets, 在 Rails 中,资产管理的解决 Rails 资产 Bundler 到 Bower 代理本自述文件涉及项目的开发方面。 访问站点了解如何在你的应用程序中使用 Rails 资产。 插件开发设置git clone git@github.com:tenex/r

    Ruby-LiteCable轻量级ActionCable实现免Rails

    Lite Cable 提供了一种简单而强大的方式,让你能够在不依赖Rails的环境中实现ActionCable的功能。这使得它可以应用于更广泛的项目,无论是简单的Web应用还是需要高性能实时通信的复杂系统。通过深入理解Lite Cable的...

    Rails的中文乱码问题

    在Rails中,可以在`config/application.rb`或`config/environments/development.rb`中设置`config.encoding = "utf-8"`。 4. **数据库连接**:确认数据库连接器(如ActiveRecord)的连接参数中包含正确的字符集配置...

Global site tag (gtag.js) - Google Analytics