以下是在 html.erb 中完成的迭代树,它在树结构中仅达到两个级别:
<ul>
<li><%= root_template.id %></li>
<ul>
<% for template in root_template.children %>
<li><%= template.id %></li>
<% if template.has_children? %>
<ul>
<% for template_child in template.children %>
<li><%= template_child.id %></li>
<% end %>
</ul>
<% end %>
<% end %>
</ul>
</ul>
结果:
我想移动帮助文件中的代码并应用递归以达到所有级别:
html.erb(因此,从模板设置根):
<% html = '' %>
<ul>
<li><%= root_template.id %></li>
<ul>
<%= recursive_tree root_template, html %>
</ul>
</ul>
然后辅助方法:
def recursive_tree(root, html)
html << ''
if !root.has_children?
html << "<li>#{root.id}</li>"
return html.html_safe
else
for template_child in root.children
html << "<ul>#{recursive_tree(template_child, html)}</ul>"
end
end
return html.html_safe
end
结果:
我已经花了一天的时间来弄清楚如何将正确的 html 从帮助程序发送到模板,现在即使我使用了调试器,也无法弄清楚这种递归和解决方案的问题是什么。有意见吗?