Как отобразить вложенный список ul для представления дерева предков
Я хочу отобразить структуру, показанную ниже, используя content_tag, где коллекция является объектом предков.
<ul>
<li>
<a>Fruits</a>
<ul>
<li>
<a>Apple</a>
</li>
<li>
<a>Orange</a>
</li>
</ul>
</li>
<li>
<a>Colours</a>
</li>
</ul>
2 ответа
Я верю, что это ответ, сообщество, пожалуйста, отредактируйте и настройте этот пост, если он не прав.
Создайте вспомогательный метод, подобный этому
def nested_groups(groups)
content_tag(:ul) do
groups.map do |group, sub_groups|
content_tag(:li, group.name + nested_groups(sub_groups))
end.join.html_safe
end
end
затем передайте объект родства методу в представлении:
<%= nested_groups(@groups.arrange) %>
это сделает правильный список ul-list.
Следующий код создаст правильно вложенный список. См. W3schools, например.
Сначала создайте помощника:
module AttributeHelper
def nested_attributes(attributes)
content_tag :ul do
attributes.each do |attribute|
concat(content_tag(:li, attribute.name))
if attribute.has_children?
concat(nested_attributes(attribute.children))
end
end
end
end
end
Затем используйте вспомогательный метод на ваш взгляд:
= nested_attributes(@attributes.roots)