Я использую awesome_nested_set для своей центральной структуры веб-сайта. Я хочу иметь возможность построить индексную панель на основе UL/LI из вложенного набора, но также хочу, чтобы она использовала преимущества низкой интенсивности базы данных вложенного набора. Когда я использовал act_as_tree, у меня была рекурсивная функция, которая строила индексную панель. Он просто вызывал себя, если встречал дочерние элементы и т. д. Мне интересно, есть ли лучший способ сделать это с помощью nested_set. Я придумал следующее до сих пор (непроверенный):
def recursive_indexbar(parent, parameters)
return unless parameters.length == 1 && parameters.first.to_i > 0
maximum_level = parent.level + parameters.first
content_tag :ul do
parent.descendants.current.visible.front_end.recurse do |component_instance, block|
content_tag :li, :class => (@item.component_instance == component_instance) ? 'uber' : false do
component_instance.name
unless component_instance.leaf?
content_tag :ul, block.call
end
end
end
end
end
Теперь это на самом деле не работает, потому что в nested_set нет рекурсивной функции, я просто взял это по этой ссылке: http://dev.rubyonrails.org/ticket/9678. Смотрите последний комментарий на странице.
Также будет возможность пройти несколько уровней вглубь, но это легко реализовать.
Может ли кто-нибудь дать мне какие-либо указатели?