3

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

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

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/userparams[:user]之后的所有内容/user(假设只有一个用户并且它是可选的)。

我正在寻找最好的方法来做到这一点,最好只在routes.rb文件中使用一条语句。我认为最棘手的部分是,在/path可能提供文件的实际路径之后,N 倍深。

4

2 回答 2

4

你想要路线通配符

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

对于没有路径的情况,您可能还需要添加额外的路由:

match 'files/user/:user' => 'user#files'
于 2012-12-23T00:19:44.670 回答
1

感谢Chris Heald 的回答,我最终选择了这个,它适合这个场景:

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

仍然想知道这是否可以用单线处理。

于 2012-12-23T01:39:49.503 回答