论坛首页 编程语言技术论坛

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

浏览 7122 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-07-22  

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

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

    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中实现了二级联动菜单。

   发表时间: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>  
0 请登录后投票
   发表时间: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> 


不过有个问题,级联的值怎么取呀?不管你是二级还是多级的级联,提交后的值怎么取?因为如果是多级的话,你没办法知道是那个控件提交过来的呀:(
谁知道或做过,多谢?
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics