
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.76] |
![]() |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
здравствуйте, скачал скрипт для многоуровневого меню
вот вывод самого меню используются листы ![]() ![]() <div id="nav"> <ul> <li><a href="#"><b>Web Design</b></a> <ul class="submenu"> <li><a href="http://woork.blogspot.com">Woork</a></li> <li><a href="http://www.dzone.com">DZone</a></li> </ul> </li> <li><a href="#"><b>Tech News</b></a> <ul class="submenu"> <li><a href="http://www.mashable.com">Mashable</a></li> <li><a href="http://www.cnet.com">CNET</a></li> </ul> </li> <ul> <div> подскажите, а как эти самые ul и li вставлять рукерсией, так как количество подменю я не знаю, берутся из БД |
Сообщ.
#2
,
|
|
|
прекрасный вопрос, я считаю
я бы, например, использовал циклы. да что "например", а даже именно так и делаю а вот как "рекурсией" даже не придумать сходу |
Сообщ.
#3
,
|
|
|
Цитата zera @ я бы, например, использовал циклы можете подсказать как, у меня и так не идет |
Сообщ.
#4
,
|
|
|
подскажу, надо использовать какие-либо серверные языки
кроме того скриптом рекомендую называть скрипты ![]() html это не скрипты |
Сообщ.
#5
,
|
|
|
Gwt, при чем тут раздел JavaScript Frameworks? Что используется на твоем сервере?
|
Сообщ.
#6
,
|
|
|
Цитата gruy @ Gwt, при чем тут раздел JavaScript Frameworks? Что используется на твоем сервере? Да может ошибся, может просто в javascript надобыло!! или я вообще путаю, что это решается javascript-ом Добавлено Цитата zera @ подскажу, надо использовать какие-либо серверные языки кроме того скриптом рекомендую называть скрипты ![]() html это не скрипты я пишу на RoR!впринципе данные из БД получаю, а вот сделать меню с ними уже нет |
Сообщ.
#7
,
|
|
|
Цитата Gwt @ данные из БД получаю, а вот сделать меню с ними уже нет Как уже было сказано, пройдись циклом по полученным данным и построй html код для меню. |
Сообщ.
#8
,
|
|
|
Цитата gruy @ Как уже было сказано, пройдись циклом по полученным данным и построй html код для меню. так вот и не получается это |
Сообщ.
#9
,
|
|
|
Показывай как делаешь. Или даже не пытался?
|
Сообщ.
#10
,
|
|
|
А как они в базе хранятся?
|
Сообщ.
#11
,
|
|
|
Цитата Мохнатый @ А как они в базе хранятся? да там довольно все просто. id, name, parent_id и все |
Сообщ.
#12
,
|
|
|
Может попробовать nested_set?
|
Сообщ.
#13
,
|
|
|
вот написал все-же вариант, но он очень очень кривой, но хоть что то!
![]() ![]() <div id="myslidemenu" class="jqueryslidemenu"> <%def recurs(id)%> <%@cat =Category.find_all_by_parent_id(id) %> <%if @cat.size!=nil%> <ul> <%@cat.each do |cat|%> <li><%=link_to cat.name%> <%@cat = Category.find_all_by_parent_id(cat.id)%> <%recurs(cat.id)%> <%end%> <%end%> </li> </ul> <%end%> <%get_category_parent.each do |parent|%> <ul> <li> <%=link_to parent.name%> <%recurs(parent.id)%> </li> </ul> <%end%> <br style="clear: left" /> </div> |
Сообщ.
#14
,
|
|
|
Так у тебя рекурсии конечно нет никакой здесь. (аа, поправил уже =))
Я все-таки уверен, что проблема решается построением дерева при помощи nested_set. Если не брать nested_set, то: Суть в чем - есть парент, для каждого парента есть чайлд, этот чайлд в свою очередь может быть парентом. Парент - это <ul>, чайлд - <li>. Условие выхода из рекурсии - отсутствие чайлдов. Получается что-то типа: Метод должен быть реализован в модели: До выполнения метода нужно найти самого верхнего парента. ![]() ![]() @@html = "" def build_menu parent_id parent = Menu.find parent_id @@html += "<ul>#{parent.name}" unless (childs = parent.childs?).nil? childs.each do |child| @@html += "<li>#{build_menu child.id}</li>" end else @@html += "</ul>" return @@html end Не уверен, что нет ошибок. Сейчас у себя реализую подобное. |
Сообщ.
#15
,
|
|
|
нет не работает этот код, пытаюсь его заставить работать)))
|