您知道如何生成动态路由,例如:
... (/:parent_id(/:parent_id(/:parent_id(/:parent_id))))/:id
我问这个问题是因为我有一个充当树的Folder
模型(它有一个parent_id
字段),它的to_param
方法通过parent_id
的范围返回它的 uniq name
。因此,每个:parent_id
和事件:id
都是name
。下面是路径的示例(包含 4 个子文件夹):
/home/desktop/projects/rails/foobar
。其中第一个:parent_id
(根)是"家",:id
是"foobar"。
路由的另一个示例可能是(具有 1 个子文件夹):
/home/music
。如您所见,params[:parent_id] == 'home'
和params[:id] == 'music'
.
有没有一种干净的方法来编写一个漂亮的 Rails 3 路由来处理这些可能的嵌套路由?谢谢!!
为什么不直接使用路由 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