Url rewriting 如何在Rails 3.1中创建无限层次的html树?

Url rewriting 如何在Rails 3.1中创建无限层次的html树?,url-rewriting,ruby-on-rails-3.1,navigation,hierarchical-data,Url Rewriting,Ruby On Rails 3.1,Navigation,Hierarchical Data,我有一个名为Metrics的表,它是一个自引用表。这意味着它与无限多个子对象存在父/子关系 我有这样一条路线: match "/metrics/:id/children" => "metricchildren#index", :as => "metric_children" metricchildrencontoller加载度量的子项并呈现索引页 该页面看起来像(根父级称为总计): 现在,我要做的是让用户单击总费用,然后URL看起来像: http://example.com/met

我有一个名为
Metrics
的表,它是一个自引用表。这意味着它与无限多个子对象存在父/子关系

我有这样一条路线:

match "/metrics/:id/children" => "metricchildren#index", :as => "metric_children"
metricchildren
contoller加载度量的子项并呈现索引页

该页面看起来像(根父级称为
总计
):

现在,我要做的是让用户单击
总费用
,然后URL看起来像:

http://example.com/metrics/42-totals/children/78-total-expense
42
总计
指标的ID,78是
总费用
指标的ID。因此,当您深入到
总费用
时,它将创建一个如上所述的表,当您单击指标时,URL的增长如下:

http://example.com/metrics/42-totals/children/78-total-expense/98-total-direct
http://example.com/metrics/42-totals/children/78-total-expense/98-total-direct/102-blah
等等

与Github的工作原理非常相似。更好的是不必在URL中指定ID

关于如何做到这一点,有什么建议吗?我想我对如何做有一个想法,但我不想重新发明那个轮子

感谢

关于“递归路由”,请参阅。简单的回答是,这实际上是相当容易的路线环球

现在,我使用一个slug而不是数据库ID来滚动我自己的permalinks,但是我听说了一些很棒的事情

http://example.com/metrics/42-totals/children/78-total-expense/98-total-direct
http://example.com/metrics/42-totals/children/78-total-expense/98-total-direct/102-blah