Я хочу отобразить дерево категорий, управляемых наследством драгоценных камней.
Я хотел бы использовать помощника, который будет рекурсивно проходить по дереву и возвращать категории по очереди, на данный момент без HTML-тегов или содержимого.
module CategoriesHelper
def display_tree(category)
if category.has_children?
category.children.each do |sub_category|
display_tree(sub_category)
puts(sub_category.name) # to check if it goes here
end
end
category.name
end
end
Аргумент category
является одной из корневых категорий.
Что он должен вернуть?
- На веб-странице:
Отображает только категорию корневого уровня
Sport Beauty Automobile
- В консоли:
Men Indoor Women Children Water sport Garage
Если получить их, то это означает, что рекурсия работает, но это не так. Почему он возвращает только первую итерацию?
Также хотелось бы получить их в следующем порядке:
root/child/child-of-child
но если я хочу вернуть category.name
, он должен быть в последней позиции.
Не могли бы вы дать мне свои комментарии?
PS: Я только что обнаружил (при добавлении тегов), что я использовал слово «рекурсивность» на протяжении всего поиска, но его не существует, даже если многие люди используют его в stackOveflow; о) -> "рекурсия", но все же я застрял
** РЕДАКТИРОВАТЬ **
Теперь я использую этот код:
module CategoriesHelper
def display_tree(category)
tree = "<div class =\"nested_category\">#{category.name}"
if category.has_children?
category.children.each do |sub_category|
tree += "#{display_tree(sub_category)}"
end
end
tree += "</div>"
end
end
, что дает мне:
<div class ="nested_category">Sport
<div class ="nested_category">Men</div>
<div class ="nested_category">Women
<div class ="nested_category">Indoor</div>
</div>
<div class ="nested_category">Children</div>
<div class ="nested_category">Water sport</div>
</div>
<div class ="nested_category">Beauty</div>
<div class ="nested_category">Automobile
<div class ="nested_category">Garage</div>
</div>
Но этот html не интерпретируется, и тот же код отображается на отображаемой веб-странице. Я имею в виду, что я вижу
Я, наверное, что-то упустил ... может быть, знание oO
Thx