Rails-Treasure chest3 嵌套表单;

  •  自订列表顺序

  • 多步骤表单

  • 显示资料验证错误讯息

  • 资料筛选和搜寻

  • 软删除和版本控制

  • 数据汇出


自订列表顺序:ranked-model( 800✨)     https://github.com/mixonic/ranked-model

gem 'ranked-model'

简单使用:

为Event增加一个column, :row_order,type是integer,加上index。

  1. 在model层加上include RankedModel换行ranks: row_order
  2. 在controller层使用: Event.rank(:row_order).all
  3. 更新一条记录的顺序  @event.update(:row_order_position, 0)
    • 第二个参数,可以是数字,或者:first, :last, :up, :down方法。

如果使用一个普通的json controller, @event.attributes = params[:event]; @duck.save。

$.ajax({
  type: 'PUT', url: '/ducks', dataType: 'json', data: { duck: { row_order_position: 0 } },  });

在routes.rb中定义一个路径:member {post :reorder}

link_to "上移", reorder_admin_event_path(event, :position => :up), method: :post

link_to "下移", reorder_admin_event_path(event, :position => :down), method: :post

在路径中加上请求参数"position": "up"

复杂使用:

ranks接受几种参数:

class Duck < ActiveRecord::Base

  include RankedModel

  ranks :row_order, # 使用rank(),来定义一个ranker :column => :sort_order # 加载这个默认列, which defaults to the name  belongs_to :pond ranks :swimming_order, :with_same => :pond_id # Ducks belong_to Ponds, 让ranker围绕一个pond scope :walking, where(:walking => true ) ranks :walking_order, :scope => :walking # Narrow this ranker to a scope end

当你查询时,使用rank():
Duck.rank(:row_order)

Pond.first.ducks.rank(:swimming_order)

Duck.walking.rank(:walking)
 

Ajax UI

所谓的 Ajax 拖拉 UI,就是直接用鼠标进行拖拉排序,这种方式对用户来说操作速度更快。
拖拉的 UI 需要额外的前端套件,这里介绍 jQuery UI 的  Sortable Plugin,并直接使用  jquery-ui-rails 这个 gem 来安装.
 
知识点:
cursor property指定了当鼠标的光标在一个元素上的时候,显示什么样式

案例(博客地址):https://www.cnblogs.com/chentianwei/p/9443664.html



多步骤表单

猜你喜欢

转载自www.cnblogs.com/chentianwei/p/9438461.html