Rails - кнопка «вверх» и «вниз» сохранить в базу - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь внедрить функцию перетаскивания в мое приложение, которое работает в настольном браузере с использованием jquery-ui.

Я не могу заставить его работать на сенсорном устройстве из-за любви и денег и хотел быреализовать кнопки вверх / вниз.У меня это работает, но не могу понять, как сохранить в базе данных.

Просмотр

<ul class="products-list product-list-in-box" id="activity" data-url="<%= pages_sort_path %>" >
        <% @todays_customers.each do |today| %>
                <li class="" id="activity_<%= today.activity_id %>">
                    <div> <i class="fa fa-reorder"></i> 
                   <span class="pull-right">
                     [ <a href="#" class="up_sub" id="1_3">Up</a> ] 
                     [ <a href="#" class="down_sub" id="1_3">Down</a> ]
                   <% if today.activity_type == 'Journey Day' %>
                   <span class="label bg-red"><%= link_to "x", customer_activity_path(today.customer_id, today.activity_id), method: :delete, data: { confirm: 'Are you sure?' } %></span>
                   <% end %>
                    </span>

                  </div>
            </li>        
            <% end %>

        </ul>

JS

    <script>
    $( function() {
    $( "#activity" ).sortable({
     axis: "y",
     update: function(e, ui) {
        $.ajax({
            url: $(this).data("url"),
            type: "PATCH",
            data: $(this).sortable('serialize')
        })
     }
});
    $( "#activity" ).disableSelection();
  } );


 $('.up_sub').click(function(){
    var li = $(this).closest('li');
    var prev = li.prev();
    if(prev.length){
        li.detach().insertBefore(prev);
    }
    ;
    console.log($(this))
});
$('.down_sub').click(function(){
    var li = $(this).closest('li');
    var next = li.next();
    if(next.length){
        li.detach().insertAfter(next);
    }
   ;
      console.log($(this))
});
  </script>

Контроллер

 def sort

  params[:activity].each_with_index do |id, index|
    Activity.where(id: id).update_all(position: index + 1)
  end

  head :ok

  end

Я пытаюсь найти способ воспроизвести способ, которым перетаскивание посылает параметры каждого идентификатора записи li в последовательности после удаления.Есть мысли?

Спасибо

1 Ответ

0 голосов
/ 03 марта 2019

Я бы хотел порекомендовать вам использовать acts_at_list gem.Поэтому все, что вам нужно сделать, это использовать действие update и передать новое значение position записи, которую вы хотите перетащить / отбросить.acts_at_list будет обрабатывать все остальное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...