Hola,
He echo una adaptacion de tu codigo, a mí me funciona:
Mi condicion de categoria principal: (category.parent_id == nil)
Mi partial(_categories.html.erb):
<ul id="categories" style="list-style:none;"> <% @categories.all(:order => "show_order asc").each do |category| %> <% content_tag_for :li, category do %> <span class="handle"><%= image_tag "drag.png" %></span> <%= link_to category.name, blog_category_path(@blog.permalink, category.permalink)%> (<%= category.posts.size%>) <ul class="<%= category.children.size > 0 ? "" : "blog_category" %>" style="list-style:none;"> <% category.children.all(:order => "show_order asc").each do
sub_category| %>
<% content_tag_for :li, sub_category do %> <span class="handle"><%= image_tag "drag.png"%> </span> <%= link_to sub_category.name, blog_category_path(@blog.permalink, sub_category.permalink)%> (<%= sub_category.posts.size%>) <% end %> <% end %> </ul> <% end %> <% end %> </ul> <%= sortable_element 'categories', :url => sort_blog_categories_path(@blog.permalink),:complete => visual_effect(:highlight, 'categories'), :handle => "handle", :tree => :true, :update => "nav_zone" %>
Mi controlador:
def sort
i_sort params[:categories] @categories = @blog.categories.root render :partial => "categories/categories.html.erb"
end
def i_sort(categories_hash ) parent_id = categories_hash[:id] || nil puts categories_hash.to_a.to_s rescue puts categories_hash.to_s categories_hash.each do |key, value| if key != "id" category = Category.find(value[:id].to_i) category.show_order = key category.parent_id = parent_id category.save i_sort(value) end end end
Suerte.