Rails sort images by position

I want to be able update Attachinary::File position field

I use ruby 2.5.0, rails 5.2.2, mongoid, ‘jquery-ui-rails’ and custom Attachinary gem (https://github.com/ipatovanton/attachinary/tree/position) for images upload.

application.js

jQuery(function() {
  $(document).on('turbolinks:load', function(){
    $('.attachinary-input').attachinary()

    $("#images").sortable({
      update: function(e, ui) {
        Rails.ajax({
          url: $(this).data("url"),
          type: "PATCH",
          data: $(this).sortable('serialize'),
        });
      }
    });
  });
})

routes.rb

resources :projects do
    collection do
      patch :    sort
end
end

project.rb

class Project
  include Mongoid::Document

  has_attachments :images
end

show.html.erb

<div id="images" class="grid" data-url="<%= sort_projects_path %>">
<% @project.images.order(position: :desc).each do |image| %>
<div id="image_<%= image.      id %>" class="box">
<div class="box-image">
        <%= cl_image_tag(image.path, width: '250', height: '250', crop: 'thumb') %>
</div>
    </div>
  <% end %>
</div>

projects_controller.rb

class ProjectsController < ApplicationController
  def sort
params[:image].each_with_index do |id, index|
      Attachinary::File.where(id: id).update_all(position: index + 1)
    end
    head :  ok
end
end

When I try to drag an image, I receive the next message. But the position is not getting updated :

Started PATCH “/projects/sort” for 127.0.0.1 at 2019-01-23 18:19:46 +0300 Processing by ProjectsController#sort as / Parameters: {“image”=>[“5c4827691996da1fef832f5d”, “5c4827691996da1fef832f6e”, “5c4827691996da1fef832f5e”, “5c4827691996da1fef832f5f”, “5c4827691996da1fef832f60”, “5c4827691996da1fef832f61”, “5c4827691996da1fef832f62”, “5c4827691996da1fef832f63”, “5c4827691996da1fef832f64”, “5c4827691996da1fef832f65”, “5c4827691996da1fef832f66”, “5c4827691996da1fef832f67”, “5c4827691996da1fef832f68”, “5c4827691996da1fef832f69”, “5c4827691996da1fef832f6a”, “5c4827691996da1fef832f6b”, “5c4827691996da1fef832f6c”, “5c4827691996da1fef832f6d”, “5c4827691996da1fef832f5c”]} MONGODB | localhost:27017 | squarely_development.find | STARTED | {“find”=>“users”, “filter”=>{“_id”=>BSON::ObjectId(‘5c472c2e1996da1d037f57fb’)}, “sort”=>{“_id”=>1}, “limit”=>1, “singleBatch”=>true, “lsid”=>{“id”=>}} MONGODB | localhost:27017 | squarely_development.find | SUCCEEDED | 0.001s Completed 200 OK in 6ms

If I use ActiveRecord and gem ‘pg’ everything works

But I need this solution to work with Mongodb

Anyone with any thoughts or ideas on this?

Thanks

You’ll want to try something that is built for MongoDB and not ActiveRecord try this: https://github.com/benedikt/mongoid-tree