Использование NestedSortable с гемом Ancestry и Mongoid
Пытаясь включить вложенный сортируемый в мое приложение рельсы. Я использую Mongoid и драгоценность Ancestry и пытаюсь создать страницу, которая обновляет parent_id
категории с помощью перетаскивания с помощью Nested-Sortable.
Пыталась поэкспериментировать, но не совсем поняла, что выплевывает NestedSortable, чтобы создать контроллер, который будет его читать.
Мой контроллер имеет:
def sort
Category.update_all({parent_id: params[:parent_id].to_i})
render nothing: true
end
Маршруты:
resources :symbols, :as => :categories, :controller => :categories do
collection {post :sort}
end
Reorder.js.coffee:
jQuery ->
$('.reorder-tree').nestedSortable
handle: '.handle'
items: 'li'
toleranceElement: '> div'
update: ->
$.post($(this).data('update-url'), $(this).nestedSortable('serialize'))
И мой вид повторного заказа выдает что-то вроде:
<ol class=reorder-tree>
<li id="category_513d372b10188f9b6b000014"><div>
<i class="icon-move handle"></i>
<a href="/symbols/chickne">Chickne</a>
<span class="btn-group show-on-hover">
<a href="/symbols/new?parent_id=chickne" class="btn btn-micro" data-remote="true" title="Add Sub-Category"><i class="icon-plus"></i>
</a>
<a href="/symbols/chickne/edit" class="btn btn-micro"><i class="icon-pencil"></i>
</a>
<a href="/symbols/chickne" class="btn btn-micro" data-method="delete" data-remote="true" rel="nofollow" title="Delete Category"><i class="icon-remove"></i>
</a>
</span>
</div>
<ol class="visible"><li id="category_513d373310188f9b6b000016"><div>
<i class="icon-move handle"></i>
<a href="/symbols/smoking-babies">Smoking Babies</a>
<span class="btn-group show-on-hover">
<a href="/symbols/new?parent_id=smoking-babies" class="btn btn-micro" data-remote="true" title="Add Sub-Category"><i class="icon-plus"></i>
</a>
<a href="/symbols/smoking-babies/edit" class="btn btn-micro"><i class="icon-pencil"></i>
</a>
<a href="/symbols/smoking-babies" class="btn btn-micro" data-method="delete" data-remote="true" rel="nofollow" title="Delete Category"><i class="icon-remove"></i>
</a>
</span>
</div>
<ol class="hide"></ol>
</li>
</ol></li>
</ol>
Любая помощь будет оценена, спасибо.
1 ответ
После серьезной игры с массивом, который я получал от Nested Sortable, я смог сделать эту работу с помощью этого в моем контроллере:
def sort
# html = "Env: #{Rails.env}. "
# infor = params[:category]
params[:category].each do |id, attr|
thisCat = params[:category][id]
@category = Category.where(:_id => id).first
# html << "ID= #{id} , thisCat= #{thisCat} Name= #{@category.name} Parent= #{@category.parent_id} ; "
unless thisCat == "null"
@category.parent_id = thisCat.to_s
@category.save
end
end
# flash[:alert] = html
# flash[:error] = infor
# render nothing: true
end
Вы можете видеть то, что я прокомментировал после того, как я заставил это работать; это все мои отладочные флэш-заявления.
Ура!