act_as_list — Не перетаскивать!

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

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

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

добавил в свои объекты :integer столбец с именем position;

добавлено 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

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

Спасибо!


person Abramodj    schedule 11.06.2011    source источник
comment
Есть ли что-то, что вы должны добавить в свою модель, например, «acts_as_list» или что-то в этом роде. Я никогда не использовал это, но сейчас использую awesome_nested_set, и именно так я перетаскиваю все отличное поведение дерева в модель...   -  person jaydel    schedule 11.06.2011
comment
Да, как я уже писал, я добавил act_as_list в свою модель объекта;   -  person Abramodj    schedule 11.06.2011
comment
а, да, извините, я пропустил это. Я сканировал лакомый кусочек кода, который показал бы это в действии...   -  person jaydel    schedule 11.06.2011


Ответы (1)


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

Затем эта библиотека или решение

  1. сделать ваши элементы перетаскиваемыми и
  2. предоставить вам обратный вызов для обновления порядка в БД (обычно с использованием вызова AJAX)
person polarblau    schedule 11.06.2011
comment
Ага! Решение состояло в том, чтобы загрузить подключаемый модуль пользовательского интерфейса jQuery и вызвать его с помощью ‹%= javascript_include_tag jquery-ui-1.8.13.custom.min.js %›. - person Abramodj; 11.06.2011