`
stinge
  • 浏览: 153686 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Rails轻松实现二级级联菜单

阅读更多

Rails:利用ajax轻松实现二级级联

 

以下使用JQuery,ajax,实现rails的二级级联选择框

 

我根据访问的流程来实现这个功能

 

基本原理:两个并列的选择框,当第一个选择框中的选项被选中时,触发js方法,并把省份的id传给该方法,然后,在js与controller交互,也就是将省份的id传给controller,经过处理,将返回该省份下的所有城市到该js方法,将城市列表赋值到第二个选择框中。

 

一、视图部分

 

                <div>省、市:</div>
                <%= select_tag "province", options_for_select(["----请选择----"] + Register::Province.all.collect{|e| [e.name,e.id]}), :onchange => "get_options(this.value)" %>
                <%= select_tag "city", "<option value=\"0\">--请选择上级--</option>"%>

 

     上面给出了两个选择框

      第一个框中从数据库中读出省份,第二个选择框初始值为一个选项  --请选择上级--

      当第一个选择框中的选项被选中时,触发get_options方法,并将选项的值,也就是省份的id传给此方法

 

二、js部分

 

<script type="text/javascript">
  function get_options(value){
    $.ajax({
      type: "POST",
      url:'/friend/friend_state/get_options?id='+value,
      data:'text',
      success: function(data){
        $("#city").html(data);
      }
    }
  )
  }
</script>

 

   其中, url为与该方法交互的controller中的方法路径,并将省份id保存到标量id中,传到controller

   返回值类型为文本,并将值赋给第二个选择框

 

三、controller部分

 

 

 #省市,二级级联
 def get_options
    options = ""
    city = Register::Province.find_by_id(params[:id]).city
    city.each do |s|
      options << "<option value=#{s.id}>#{s.name}</option>"
    end
    render :text => options
  end
 

     返回值即是第二个选择框的option值

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1
0
分享到:
评论

相关推荐

    ruby on rails轻松使用

    在“ruby on rails轻松使用”这个主题中,我们可以探讨以下几个关键知识点: 1. **安装Rails**: 首先,你需要确保已经安装了Ruby环境。然后,通过Ruby的包管理器gem来安装Rails。运行`gem install rails`命令即可...

    基于ruby on rails框架实现的音乐推荐网站项目源码.zip

    基于ruby on rails框架实现的音乐推荐网站项目源码.zip基于ruby on rails框架实现的音乐推荐网站项目源码.zip基于ruby on rails框架实现的音乐推荐网站项目源码.zip基于ruby on rails框架实现的音乐推荐网站项目源码...

    基于Ruby on Rails框架实现的无线点餐系统

    Ruby on Rails框架实现的无线点餐系统项目是一个基于无线网络技术,专为餐饮行业设计的综合性信息化解决方案。此系统利用Ruby on Rails全栈式MVC框架,结合当下先进的移动互联网技术,旨在提升餐厅运营效率、优化...

    Ruby on Rails轻松使用

    Ruby on Rails,简称RoR,是一款基于Ruby编程语言的开源Web开发框架,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率,同时保持代码的简洁和可读性。RoR的核心理念是“Don't Repeat Yourself”(DRY)...

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

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

    Rails 101 入门电子书

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

    基于Ruby On Rails框架实现的音乐推荐网站项目(源代码+说明文档)-计算机专业精品Ruby课程设计

    网站会根据用户评分歌曲的数据对用户进行歌曲推荐,其中包括基于用户相似度和物品相似度的推荐,实现技术包括hadoop和mapreduce算法优化k-近邻算法实现。 网站运行:首先需要有ruby解析器和搭建rails环境,然后进入...

    Struts2和Rails的国际化实现

    Struts2和Rails都是流行的Web开发框架,它们都提供了强大的功能来支持应用程序的国际化,使得开发者可以轻松地为不同语言的用户提供本地化体验。这里我们将深入探讨这两个框架的国际化实现。 **Struts2的国际化实现...

    Rails101_by_rails4.0

    作者特别提到了“CRUD懶人大法Scaffold”,它是一种通过Rails自动生成代码的方式来快速搭建基本的CRUD操作,这大大简化了开发流程,使得开发者可以将更多的精力放在业务逻辑的实现上。 此外,书中还介绍了一些Rails...

    RailsGuides中那个blog程序源码

    RailsGuides中的"blog"程序是一个典型的入门级示例,旨在帮助初学者理解RoR的工作原理和核心概念。 在Rails中,**模型(Model)** 负责处理数据和业务逻辑,通常与数据库交互。在这个"blog"程序中,可能会有一个`...

    Agile Web Development With Ruby On Rails第一及第二版

    此外,第二版还深入讨论了Rails 3.x和4.x中的路由系统,以及如何使用Unobtrusive JavaScript(UJS)实现更干净、分离的前端代码。 这两本书都强调了敏捷开发的原则,如迭代开发、持续集成、用户故事和重构。它们...

    Rails实现的简历系统

    8. **邮件发送**:Rails的ActionMailer模块允许开发者轻松地发送电子邮件。例如,当用户提交简历时,系统可以自动发送确认邮件。配置SMTP服务器信息后,ActionMailer可以与Gmail、SendGrid等服务集成,实现邮件的...

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    rakismet, 轻松实现 Rails 和TypePad反垃圾邮件集成.zip

    rakismet, 轻松实现 Rails 和TypePad反垃圾邮件集成 Rakismet是一个协作的垃圾邮件过滤服务。 Rakismet 易于与 Rails 和 rack 应用集成。 支持typepad服务和通用Akismet端点的反垃圾邮件。兼容性Rakismet&gt; = 1.0.0 ...

    rails实现验证码实例

    实例的源代码 博文链接:https://babo.iteye.com/blog/72298

    actions_as_tenant:共享数据库设置中的Rails轻松实现多租户

    充当租户 Ruby on Rails应用程序的行级多租户。 该宝石是出于我们对故障安全和偏僻方式的需求而诞生的,该方式通过共享数据库策略(与Rails无缝集成(近))为我们的Rails应用添加多租户。 actions_as_tenant为租户...

    rails api(文档)

    Rails API可以通过Gem(如Kaminari或WillPaginate)轻松实现这些功能。 5. **版本控制**:API的版本控制很重要,Rails API允许你为不同版本的API创建独立的命名空间,确保向后兼容性。 6. **错误处理**:Rails API...

Global site tag (gtag.js) - Google Analytics