具有多个,可选和漂亮参数的路由

时间:2012-12-22 23:55:54

标签: ruby-on-rails routes

我有一种情况,我需要构建漂亮的URL路径。

我有一个需要处理以下URL的FilesController:

mydomain.com/files/path/dir1/dir2/user/bob
mydomain.com/files/path/dir1/user/bob
mydomain.com/files/path/dir1
mydomain.com/files/user/bob

在控制器中,我希望params[:path]包含/path/user以及params[:user]之间的所有内容,以包含/user之后的所有内容(假设只有一个用户和这是可选的。

我正在寻找最佳方法,最好只在routes.rb文件中使用一个语句。我认为最棘手的部分是,在/path之后,可能会提供文件的实际路径,N次深度。

2 个答案:

答案 0 :(得分:3)

您想要route globbing

match 'files/*path/user/:user' => 'user#files'

您可能还需要为没有路径的情况添加其他路线:

match 'files/user/:user' => 'user#files'

答案 1 :(得分:0)

感谢Chris Heald's answer,我最终选择了适合这种情况的内容:

match 'files/user/:user' => 'files#index'
match 'files/path/*path/user/:user' => 'files#index'
match 'files/path/*path' => 'files#index'

仍然想知道这是否可以通过单行处理。