是否可以使用acts_as_tree创建类似文件系统的路由?

时间:2009-11-08 10:31:29

标签: ruby-on-rails routes acts-as-tree

我有一个Folder模型acts_as_tree

路线是否可能代表文件夹结构?

文件夹:

1: Folder A
  2: Folder B
  3: Folder C
    4: Folder D
5: Folder E

路线:

/folders/1
/folders/1/2
/folders/1/3/4
/folders/1/2/new
/folders/...

这可能吗?

1 个答案:

答案 0 :(得分:1)

据我所知,没有简单的方法可以做到这一点。

我认为最好的方法是使用一组命名路由。

我没有测试过这个,所以没有保证,但即使它失败也应该给你一些提示。

map.my_new_folder '/folders/:ancestors/:id/new', :controller => "folders",
 :action => "new", :ancestors => /^(\d+\/?)*$/
map.my_show_folder, '/folders/:ancestors/:id', :controller => "folders",
 :action => "show", :ancestors => /^(\d+\/?)*$/
map.my_edit_folder '/folders/:ancestors/:id/edit', :controller => "folders",
 :action => "edit", :ancestors => /^(\d+\/?)*$/
...

您必须自己构建祖先字符串并将其作为选项传递给my_x_folder_path。但你应该得到你想要的漂亮网址。您可能最好将其提取到帮助程序,该帮助程序还可以根据祖先的存在动态选择资源路径或命名路径路径。