2

你知道如何动态生成路由,例如:

... (/:parent_id(/:parent_id(/:parent_id(/:parent_id))))/:id

我问这个问题是因为我有一个Folder充当树的模型(它有一个parent_id字段),并且它的to_param方法name通过parent_id. 所以,每个:parent_id事件:id都是name. 这是一个路径示例(带有 4 个子文件夹):

/home/desktop/projects/rails/foobar

...其中第一个:parent_id(根)是“home”,而 the:id是“foobar”。

路线的另一个示例可能是(带有 1 个子文件夹):

/home/music

...在哪里,如您所见,params[:parent_id] == 'home'params[:id] == 'music'

有没有一种干净的方法来编写一个漂亮的 Rails 3 路线来处理那些可能的嵌套路线?谢谢!!

4

1 回答 1

4

为什么不直接使用路由 globber并在控制器中将其分解?

# routes.rb
get "/*folders/:id" => "files#show" 

*folders部分将汇总多个 URL 段。

# files_controller.rb
def show
  folders = params[:folders].split('/') # gives an array of folder names
  # do whatever else necessary
end
于 2011-05-11T22:03:34.693 回答