Поиск по этому блогу

22 ноября 2010 г.

Сортируемое дерево в Rails 3

добавим gem: awesome_nested_set (https://github.com/collectiveidea/awesome_nested_set)
скачаем и подключим js: nestedSortable jQuery Plugin 1.2.1 (http://mjsarfatti.com/sandbox/nestedSortable/)
в хелпере:
"<script>$('##{class_name_plural}').nestedSortable({
            disableNesting: 'no-nest',
            forcePlaceholderSize: true,
            handle: '.handle',
            items: 'li',
            opacity: .4,
            placeholder: 'placeholder',
            tabSize: 25,
            tolerance: 'pointer',
            toleranceElement: '> div',
            update: function(){
          $.ajax({
            type: 'post',
            data: $('##{class_name_plural}').nestedSortable('serialize'),
            dataType: 'script',
            complete: function(request){
              $('##{class_name_plural}').effect('highlight');
              },
            url: '#{url}'})
          }
        });</script>".html_safe
в контроллере: 
  def sort_sortable(object_class)
    i=0
    object_name = object_class.to_s.downcase
    params[object_name].each do |object|
      i+=1
      o = object_class.find(object[0])
      o.position = i
      if object[1] == 'root'
        o.parent = nil
      else
        o.parent = object_class.find(object[1])
      end
      o.save
    end
  end
ну и во view важно иметь вложенные элементы внутри тега <ol>
Результат:

Комментариев нет:

Отправить комментарий