我正在开发一个 Ruby on Rails 系统,该系统有一个与自身Project
相关的表(循环关系是不可能的)。通过这种方式,一个项目可以成为多个其他项目的一部分,这非常有用,并且是新应用程序所基于的遗留系统的杀手级功能。我需要一种方法来在单个页面上显示所有项目及其、和其他简单属性。每个项目都必须相对于它们的每个父项显示(重复条目很好),并且每个属性值必须由浏览器与其他属性对齐(没有一个总是会中断的“静态宽度”渣滓)。项目也必须是可折叠的,尽管我怀疑这与解决方案无关。has_and_belongs_to_many
name
short_name
当前的解决方案类似于如何在 HTML 表格中呈现树?解决方案:使用 a<table>
并使用 CSS 在最左侧的列中实现“树状”结构padding-left
。通过存储每个项目的父项目 ID 来保持完整的父子关系。因为这不是语义标记,所以很难用 JavaScript 处理结果表。如果要折叠一个节点,则必须在折叠的一个节点<tr>
之后遍历每个节点,直到找到同一级别的节点,而不仅仅是删除子节点列表。此外,多个项目不止一次展示
是否有一种语义方式可以在 HTML(任何版本)中表示这样的数据结构,而不会牺牲所有合理设置样式的能力?据我所知,表格列表无法正确对齐,并且无法将列表与表格混合。
我没有标记ruby
或ruby-on-rails
因为编程语言与任务无关,只是为了解释现有系统的结构。