1

我正在开发一个 Ruby on Rails 系统,该系统有一个与自身Project相关的表(循环关系是不可能的)。通过这种方式,一个项目可以成为多个其他项目的一部分,这非常有用,并且是新应用程序所基于的遗留系统的杀手级功能。我需要一种方法来在单个页面上显示所有项目及其、和其他简单属性。每个项目都必须相对于它们的每个父项显示(重复条目很好),并且每个属性值必须由浏览器与其他属性对齐(没有一个总是会中断的“静态宽度”渣滓)。项目也必须是可折叠的,尽管我怀疑这与解决方案无关。has_and_belongs_to_manynameshort_name

当前的解决方案类似于如何在 HTML 表格中呈现树?解决方案:使用 a<table>并使用 CSS 在最左侧的列中实现“树状”结构padding-left。通过存储每个项目的父项目 ID 来保持完整的父子关系。因为这不是语义标记,所以很难用 JavaScript 处理结果表。如果要折叠一个节点,则必须在折叠的一个节点<tr>之后遍历每个节点,直到找到同一级别的节点,而不仅仅是删除子节点列表。此外,多个项目不止一次展示

是否有一种语义方式可以在 HTML(任何版本)中表示这样的数据结构,而不会牺牲所有合理设置样式的能力?据我所知,表格列表无法正确对齐,并且无法将列表与表格混合。

我没有标记rubyruby-on-rails因为编程语言与任务无关,只是为了解释现有系统的结构。

4

1 回答 1

0

您可以将列表与表格混合使用...您的帖子有点难以接受,我相信绘图会有所帮助,但从我可以从中获得的东西,如果可以的话,我会尽力提供帮助

<table>
  <tr>
    <% obj1.each do |o1| %>
    <td>
      <ul id="tree_<%= o1.id %>">
        <% obj2.each do |o2| %>
          <li><%= o2.name %></li>
        <% end %>
      </ul>
    </td>
    <% end %>
  </tr>
</table>

然后你可以隐藏指定 ul.tree 的列

也许我误解了您的需求,但我希望这会有所帮助!:)

去铁轨!!

于 2012-04-18T15:25:37.587 回答