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

On Thu, Jan 24, 2019 at 8:35 AM Anton Ipatov <[email protected]> wrote:

> 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
>     endend
>
> *project.rb*
>
>
> class Project
>   include Mongoid::Document
>
>   has_attachments :imagesend
>
> *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
>   endend
>
> 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 received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rubyonrails-talk/9fa0c674-8830-4f15-8582-def21218fe9f%40googlegroups.com
> <https://groups.google.com/d/msgid/rubyonrails-talk/9fa0c674-8830-4f15-8582-def21218fe9f%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/CAL%3DuaDA54UGdjkqxXF0HG9sLAg1Na1aAuJw0HQ77RyWL6_ZmRg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to