acts_as_list - не перетаскивать! - PullRequest
1 голос
/ 11 июня 2011

Я следовал нескольким урокам, чтобы сделать эту работу, но я не могу получить перетаскиваемые предметы.Вот что я сделал:

добавил gem 'acts_as_list' в мой GemFile и bundle install

добавил <%= javascript_include_tag :defaults %> в мое application.html.erb

добавил :integer столбец с именем позиция для моих объектов;

добавил acts_as_list в моей модели объекта;

добавил метод сортировки в моей модели объекта:

 def sort
   @facilities = Facility.all
   @facilities.each do |f|
     f.position = params['f'].index(f.id.to_s) + 1
     f.save
   end
 end

добавил это на мой взгляд:

<ul id="facilities">
<% for facility in Facility.all %>
  <% content_tag_for :li, facility do %>
    <span class="handle">[drag]</span>
    <%= link_to h(facility.name), facility %>
  <% end %>
<% end %>
</ul>
<%= sortable_element("facilities", :url => sort_facilities_path, :handle => "handle") %>

добавил это к маршрутам:

  resources :facilities do  
    collection do  
      post :sort  
    end  
  end

Но в итоге у меня есть только обычный список, не перетаскиваемый!Чего мне не хватает?

Спасибо!

1 Ответ

2 голосов
/ 11 июня 2011

Насколько я помню, acts_as_list имеет дело только со списками в моделях Rails, что означает серверную часть вещей .Чтобы сделать элемент списка перетаскиваемым, вам нужно будет включить клиентскую библиотеку или плагин, такой как jQuery UI .Сам камень не включает (или, по крайней мере, не использовал) функциональность, которую вы описываете.

Эта библиотека или решение затем

  1. сделает ваши элементы перетаскиваемыми и
  2. предоставляет вам обратный вызов для обновления заказа в БД (обычно с использованием вызова AJAX)
...