Here's an somewhat unconventional approach to drag and drop sorting using acts_as_list I came up with this week. In the old days, I would have implemented something similar to this RailsCasts episode. But I think I might like this better.
I made a YouTube video explaining my thinking.
As Chris...
class ListInsertionsController < ApplicationController
def create
item = GlobalID::Locator.locate(params[:item])
precursor = GlobalID::Locator.locate(params[:precursor])
authorize item, :update?