首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用jQuery和Rails 3实现ajax可排序列表

使用jQuery和Rails 3实现ajax可排序列表,需要遵循以下步骤:

  1. 安装jQuery插件

在Rails项目中,可以使用gem 'jquery-rails'来安装jQuery插件。在Gemfile中添加以下代码:

代码语言:txt
复制
gem 'jquery-rails'

然后运行bundle install来安装插件。

  1. 在Rails项目中引入jQuery

app/assets/javascripts/application.js文件中,添加以下代码:

代码语言:txt
复制
//= require jquery
//= require jquery_ujs

这样就可以在Rails项目中使用jQuery了。

  1. 创建可排序列表

首先,在Rails控制器中创建一个可排序列表的数据。例如,在app/controllers/home_controller.rb文件中添加以下代码:

代码语言:txt
复制
def index
  @items = Item.all.order(:position)
end

其中,Item是一个模型,position是一个整数字段,用于表示列表项的排序顺序。

然后,在app/views/home/index.html.erb文件中创建一个列表:

代码语言:txt
复制
<ul id="sortable">
  <% @items.each do |item| %>
    <li id="item-<%= item.id %>"><%= item.name %></li>
  <% end %>
</ul>

这里,我们使用了id="sortable"来标记列表,以便在后面使用jQuery进行排序。

  1. 使用jQuery实现排序

app/assets/javascripts/home.js文件中添加以下代码:

代码语言:txt
复制
$(document).ready(function() {
  $('#sortable').sortable({
    axis: 'y',
    update: function(event, ui) {
      var data = $(this).sortable('serialize');
      $.ajax({
        data: data,
        type: 'POST',
        url: '/home/sort'
      });
    }
  });
});

这里,我们使用了jQuery的sortable插件来实现列表的排序。当列表项被拖动时,会触发update事件,我们在这个事件中使用ajax将排序结果发送到服务器。

  1. 在服务器端处理排序结果

config/routes.rb文件中添加以下代码:

代码语言:txt
复制
post 'home/sort' => 'home#sort'

这样,我们就可以在/home/sort路径上接收ajax请求。

接下来,在app/controllers/home_controller.rb文件中添加以下代码:

代码语言:txt
复制
def sort
  params[:item].each_with_index do |id, index|
    Item.where(id: id).update_all(position: index + 1)
  end
  head :ok
end

这里,我们使用了update_all方法来批量更新列表项的排序顺序。

至此,我们已经实现了使用jQuery和Rails 3实现ajax可排序列表。当用户拖动列表项时,列表项的排序顺序会被自动更新,并且服务器端也会同步更新数据库中的排序顺序。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Rails框架流行在他的设计理念

2、Convention Over Configuration --约定高于配置 Rails几乎成了敏捷web框架的代名词,Java社区的Grails,.NET开源项目Mono RailsSubsonic...2、O/R Mapping: NHibernate,IbatisNet等ORM架构都有至少有一个记录OR映射关系的配置文件,然而Rails框架没有,它使用Scaffold生成model,默认情况下就是英文复数的表名对应单数的...SubSonic项目Castle的ActiveRecord的子项目,由于.net静态语言的原因,在动态特性的实现上没有RoR中那么灵活,它基于.net中的attribute来标识字段关系,SubSonic...3Ajax,这年头,一个web框架肯定要支持ajax,asp.net mvc框架目前对ajax的支持方面很多人用jQuery做例子的很多。...MonoRail之前默认用的是prototype库,MonoRail团队正在支持其他的javascript框架,参看jQuery MonoRail 4、Loger: 对一个web应用,log是很常用的

1.9K50

后台管理UI的选择

RIA framework), 是中国人自己开发的基于jQuery实现Ajax RIA开源框架....八、Admin LTE AdminLTE 是一个基于Bootstrap 3.x的免费主题,它是一个完全响应式管理模板。高度定制的,易于使用。适合从小型移动设备到大的台式机很多的屏幕分辨率。...input mask jQuery Knob jVector Map Slim Scroll Pace Bootstrap Social Buttons 特点: 响应式布局,支持多种设备 打印增强 丰富排序的面板组件...它是充分响应的由Bootstrap3 +框架开发的模板,HTML5CSS3。它有很多重用的UI组件集成了最新的jQuery插件。...想来想去还是拿不定主意,不过有点想法: 1、使用HUIbootstrap 2、使用EasyUI的框架,内容页使用HUI+BootStrap,iframe选项卡 3、从各个功能强大的页面中拿一些插件过来

4.9K20

ajax中参数traditional的作用

使用ajax向后台传值的时候,有的时候一个字段需要传多个值,这种情况下会想到用数组形式来传,比如: $.ajax({ type: "post", async: true, data: {...error: function(request) {}, success: function(data) {} }); 但是通过测试很快就会发现java后台无法取到参数,因为jQuery...需要调用jQuery.param序列化参数,jQuery.param(obj, traditional )默认情况下traditional为false,即jquery会深度序列化参数对象,以适应如PHP...Ruby on Rails框架,但servelt api无法处理,我们可以通过设置traditional 为true阻止深度序列化,然后序列化结果如下:     records: ["123", "456..., "789"] => records=123&p=456&p=789 随即,我们就可以在后台通过request.getParameterValues()来获取参数的值数组了,如下: $.ajax

39830

dataTable参数说明

Boolean true serverSide 当设为true时,列表的过滤,搜索排序信息会传递到Server端进行处理,实现真翻页方案的必需属性.反之,所有的列表功能都在客户端计算并执行...ajax String模式: 直接传入一个string作为远程ajax请求路径 String 对象模式: 支持JQuery.ajax函数的参数设置,支持type,url等标准参数...ajax 函数对应参数 ajax.data 标准JQuery.ajax的data参数作用类似,但效果有所不同.仅当 serverSide参数为true的时候,参数属性才有意义,当serverSide...控制是否支持多重排序,如果为true,可以通过shift+点击列头实现多重排序,或者通过API实现,否则禁用该功能....,如果要在控件使用过程中对它进行控制变化,就需要用到DataTables的函数库(API).

4.5K20

Github 移除 JQuery 的过程

jQuery使操作DOM、定义动画发出“AJAX”请求变得简单——基本上,它使web开发人员能够创建更现代、更动态的体验,而这些都是其他人无法比拟的。...实现CSS类名切换; CSS现在支持在样式表而不是JavaScript中定义可视化动画; $.ajax请求可以使用Fetch标准执行; addEventListener()接口足够稳定,可以跨平台使用;...为了方便使用自动化,我们创建了eslint插件jquery,如果有人试图使用jquery特性(例如$.ajax),它将使CI检查失败。...许多旧代码都与pjaxfacebox jQuery插件的外部接口有显式耦合,因此我们保持了它们的接口相对相同,而在内部使用vanilla JS替换了它们的实现。...大量与rails行为接口的旧代码,我们的Ruby on rails适配器采用“不引人注目”的JS方式,将AJAX生命周期处理程序附加到某些表单: 我们不必一次将所有这些调用站点重写为新方法,而是选择触发假

2.1K10

jQuery基础(五)一Ajax应用与常用插件-imooc

第1章 jQuery 实现Ajax应用 本章介绍jQuery中支持Ajax的各种方法函数,阐述通过Ajax交互的过程与常用方法,重点介绍核心方法$.ajax()的运用技巧。...ajaxSetup()方法设置全局Ajax默认选项  1-9 使用ajaxStart()ajaxStop()方法  1-10 练习题  1-11 编程练习 第2章 jQuery 常用插件 本章节先通过示例与插件相结合的方式...jQuery UI型插件 本章介绍包括拖曳、放置、排序在内的各类UI插件的使用过程,介绍各类微型插件的使用方法注意事项,以及最新版UI中菜单工具、微调按钮、工具提示插件的效果使用方法。  ... 4-7 URL操作函数  4-8 使用$.extend()扩展工具函数  4-9 使用$.extend()扩展Object对象  4-10 练习题  4-11 编程挑战 jQuery 实现Ajax应用...,options为调用方法时的配置对象, 例如,在页面中,通过加载sortable插件将元素中的各个表项实现拖曳排序的功能,如下图所示: 在浏览器中显示的效果: 3-4面板折叠插件—

16.5K20

《Kotin 极简教程》第14章 使用 Kotlin DSL第14章 使用 Kotlin DSL《Kotlin极简教程》正式上架:

DSL 让我们理解使用模型更加简易。 DSL 有内部 DSL 跟外部 DSL 之分。例如 Gradle、Anko 等都是我们使用通用编程语言(Java Kotlin)创建的内部DSL。...Rails之所以被称为DSL,原因之一在于Rails应用了一些Ruby语言的特性,使得基于Rails编程看上去与基于通用目的的Ruby语言编程并不相同。...创建外部DSL创建一种通用的编程语言的过程是相似的,它可以是编译型或者解释型的。它具有形式化的文法,只允许使用良好定义的关键字表达式类型。...在这里我们对 OkHttp 做一下简单的封装,实现一个类似 jquery 中的 Ajax 的 http 请求的DSL。...提示: 更多关于OkHttp 的使用参考: http://square.github.io/okhttp/ 创建 Kotlin Gradle 项目 我们首先使用 IDEA 创建 Kotlin Gradle

2.1K10

jQuery 表格插件汇总

本文搜集了大量 jQuery 表格插件,帮助 Web 设计者更好地驾御 HTML 表格,你可以对表格进行横向竖向排序,设置固定表头,对表格进行搜索,对大表格进行分页,对表格进行滚动,拖放操作等等。...Chromatable JQuery Plugin - 固定表头,滚动内容区,内容区滚动的时候表头位置保持不变。 ? ?...jqGrid Plugin - 基于 AjaxjQuery 表格插件,可以 Ajax 方式从服务器端获取数据填充进来(演示)。 ? ?...Colorize - 自动对表格间隔行使用不同背景颜色 ? ? jExpand - 一个非常轻量的 jQuery 插件,可以展开/关闭表格单元格,使表格可以容纳更多内容。 ? ?...Tablesorter 2.0 - 将普通的,拥有 THEAD TBODY 标签的表格转换为排序表格,可以分析多种数据,支持多列排序。 ? ?

7.4K10

「沙里淘金」精选浏览器端JavaScript库资源推荐

fancyInput - 使用CSS3效果在输入字段中输入乐趣。 jQuery-Tags-Input - 使用这个jQuery插件将一个简单的文本输入神奇地转换为一个很酷的标签列表。...滑动滑动 - 与touchSwipe库配合使用的滑动滑动菜单。 表/网格 jTable - 一个用于创建基于AJAX的CRUD表的jQuery插件。...Packery - 使用bin-packing算法的网格布局库。可用于拖动布局。 Isotope- 可过滤,排序的网格布局库。可以实现Masonry,Packery其他布局。...jquery.vibrate.js - Vibration API Wrappers list.js - 为表,列表各种HTML元素添加搜索,排序,过滤器灵活性。构建为不可见并处理现有HTML。...http://www.listjs.com mixitup - MixItUp - 过滤排序插件。 grid - 拖放库,用于二维,可调整大小响应式列表

5.8K20

「首席架构师推荐」一系列很棒的的浏览器端JavaScript库资源

fancyInput - 使用CSS3效果在输入字段中输入乐趣。 jQuery-Tags-Input - 使用这个jQuery插件将一个简单的文本输入神奇地转换为一个很酷的标签列表。...滑动滑动 - 与touchSwipe库配合使用的滑动滑动菜单。 表/网格 jTable - 一个用于创建基于AJAX的CRUD表的jQuery插件。...Packery - 使用bin-packing算法的网格布局库。可用于拖动布局。 Isotope- 可过滤,排序的网格布局库。可以实现Masonry,Packery其他布局。...jquery.vibrate.js - Vibration API Wrappers list.js - 为表,列表各种HTML元素添加搜索,排序,过滤器灵活性。构建为不可见并处理现有HTML。...http://www.listjs.com mixitup - MixItUp - 过滤排序插件。 grid - 拖放库,用于二维,可调整大小响应式列表

6.6K21

WPJAM Basic 实现文章后台列表页全 AJAX 操作

因为对于我这样的一个后端程序员来说,使用 jQuery 这种传说中已经过时的技术,把整个后台页面的操作改成全 AJAX 操作,体验相当于一个 Web APP 的感觉,说出来牛逼得不要不要的,简直有点闪闪了...AJAX 操作文章 WPJAM Basic 很早之前实现了在文章列表AJAX 操作,为了方便,可以把很多操作都提到列表页。...AJAX 查询文章 现在再接再厉,实现 AJAX 查询文章,现在在文章列表查询文章,点击之后不再刷新页面,会有加载效果的 loading 的图片,然后直接返回列表数据。...文章排序功能:点击之后是无需刷新页面。 点击作者筛选:分类筛选,标签筛选,都是 AJAX 操作。...AJAX 操作开关 如果你不喜欢或者其他的插件冲突了,这个 AJAX 插件选功能页是提供开关的,在「WPJAM」> 「文章设置」可以 AJAX 查询功能给关了: 不过个人还是非常建议保留的,毕竟交互体验方面都提升了非常多

40220

ThinkPHP5.1+Ajax实现的无刷新分页功能示例

本文实例讲述了ThinkPHP5.1+Ajax实现的无刷新分页功能。...需要在后台展示自定义属性列表(lst.html),其中的列表部分摘出来,放到(paginate1.html)中: <div class="row" <div class="col-sm-12"...,所以还要在引入回去,才能使页面完整,同时,为了方便进行jquery操作,把列表用带id的div包裹起来: <div id="paginate" {include file="selfattribute...page=<em>3</em>" rel="external nofollow" 3</a </li <li <a href="/xkershouche/public/admin/selfattribute...然后开始写js代码,因为我们的分页按钮也在被请求的页面当中,属于“未来”的元素,所以这里我们要用on方法,这个方法是<em>jquery</em>1.7以后的方法,注意自己的<em>jquery</em>版本。

1.3K41

jQuery 教程

”) 列表中的第四个元素(index 值从 0 开始) :gt(no) $(“ul li:gt(3)”) 列举 index 大于 3 的元素 :lt(no) $(“ul li:lt(3)”) 列举 index...CSS值 jQueryAJAX 简介 AJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新。...如果没有 jQueryAJAX 编程还是有些难度的。编写常规的 AJAX 代码并不容易,因为不同的浏览器对 AJAX实现并不相同。这意味着您必须编写额外的代码对浏览器进行测试。...不过,jQuery 团队为我们解决了这个难题,我们只需要一行简单的代码,就可以实现 AJAX 功能。...它可注册多个回调函数到回调列表,调用回调列表并且传递异步或同步功能的成功或失败的状态。 延迟对象是链接的,类似于一个 jQuery 对象链接的方式,区别于它有自己的方法。

17K20

React 学习路线图 2018版

截止至本文发布时,原仓库已经有了中文版,大家自行选择查阅,由于是 roadmap 的聚合类列表,所以翻译方面差异不会很大。 学习路线图 ?...grid flexbox 为页面布局 iii.JS 基础 ·熟悉语法 ·学习 DOM 的基础操作 ·学习 JS 中的经典机制 (提升、事件冒泡...、原型) ·发起一些 AJAX (XHR) 请求 ·学习新功能 (ES 6+) ·此外,熟悉下 jQuery 库 2.开发通用技能 i.学习 GIT...Google Google 的强力搜索 iv.熟悉终端,配置 shell (bash、zsh、fish) v.读一些数据结构算法的书 vi.读一些设计模式的书 3.在官方网站上学习...○React i18next 14.服务端渲染 ○Next.js ○After.js 15.静态网站生成器 ○Gatsby 16.后端集成框架 ○React on Rails

2.4K41

Web前端开发推荐阅读书籍、学习课程下载

第二部分 AJAX概述与IntelliJ安装 使用IntelliJ开发Web项目 用IntelliJ部署Web项目 准备AJAX服务器端环境 准备AJAX客户端程序环境 使用FireBug调试javascript...JQuery的应用与高级调试技巧 JQuery的总结与简化调用 各种Ajax框架的对比介绍 各种Ajax框架的对比介绍 使用XHR对象发送接受数据 浏览器穷尽测试与工具漫谈 为学员调试错误与XHR深入讲解...效果演示 实现淡入淡出.引出FireBug调CSS 可收缩展开的级联菜单与局部刷新 答疑学员问题与用IE8分析滚动表格 实现可编辑的表格 完成后台模拟股票涨跌的功能 将股票信息组装成JSON格式 用红绿色实时显示股票价格的涨跌...的工具方法 08. jQuery的工具方法ajax 09. jQuery的插件操作 phonegap第三季 angularjs+ionic视频教程 01 phonegap + Angularjs +...$watch方法 07 Angularjs 工具方法 以及angularjs中使用jquery 08 Angularjs 事件指令 input相关指令 样式指令 DOM操作指令详解 11 Angularjs

12.7K71

用selenium自动化验收测试

用 Selenium 自动化验收测试 如何使用 Selenium 测试工具对 Ruby on Rails Ajax 应用程序进行功能测试 文档选项 将此页作为电子邮件发送 讨论 样例代码 拓展...文中还给出了一个例子,以演示如何将 Selenium 应用到现实中使用 Ruby on Rails Ajax 的项目上。...这是因为 Ajax 就像它的名称所表明的那样,使用 JavaScript 异步 HTTP 请求来更新页面内容。每个浏览器在实现中与其他浏览器相比有一些小小的不同。...Ruby/Ruby on Rails Ruby 是一种开放源码的解释型脚本语言,用于快捷、容易地进行面向对象程序设计。它提供了大量的库,而且简单易用,还具有扩展性可移植性。...图 3 展示了被转换成 Selenium 用例的需求。 图 3. 查看股票细节测试用例 注意 pause 命令:必须使用这些命令,以便等待异步请求完成更新页面内容。

6.1K30
领券