Rails 如何实现 rails 中列表拖拽排序的功能?

roar · 2014年07月17日 · 最后由 algo31031 回复于 2014年07月17日 · 2182 次阅读

我现在使用 rails3.2.16+ruby1.9,使用了 acts_as_list 插件,只实现了点击按钮上移和下移的操作,一次只能移动一个位置。 这里涉及到三个 model,具体关系如下: 1、三个 model 分别为:vm, vm_temp 和 vdisk 2、三者关系为:

class Vm < ActiveRecord::Base
  has_many :vdisks, order: :position
class VmTemp < ActiveRecord::Base
  has_many :vdisks, order: :position
class Vdisk < ActiveRecord::Base
  acts_as_list scope: [:vm_id, :vm_temp_id]

其中,vdisk 的 position 代表排序的序号,当然必须是属于同一个 vm 或 vm_temp

3、现在问题是:我想实现列表项拖拽排序的功能,本来 rails3.0 之前有一个 sortable_element 方法可以实现,但是 3.0 以后的版本移除了。我在网上看到有一些使用 jQuery 实现,但是我在担心不使用 acts_as_list,又如何对 vm_id 和 vm_temp_id 两个不同范围中的 vdisk 排序。

所以请教各位有没有比较好的方法实现

看看那个 gem 的 model 是如何实现的。然后去掉 gem,自己写 model, 自己写前端。

看到 acts_as_list 下 有类似list_item.insert_at(2)能直接插到指定位置的 api 应该可以在前段配合 jquery draggable 一起用吧,拖拽完之后把目标的 id 和 position 一起传回去 另外可能要注意下设置下对齐啥的

总之感觉大部分都是 js 的活儿

需要 登录 后方可回复, 如果你还没有账号请 注册新账号