Alternative approach to drag and drop sorting with acts_as_list

Curated ago by @jeremysmithco

Description

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 Oliver notes, it’s probably best to use Signed Global IDs to avoid users tampering with model names and IDs.

1
2
3
4
5
6
7
8
9
10
class ListInsertionsController < ApplicationController
  def create
    item = GlobalID::Locator.locate(params[:item])
    precursor = GlobalID::Locator.locate(params[:precursor])
    authorize item, :update?
    item.insert_after(precursor)

    head :ok
  end
end