我有一种情况,我需要构建漂亮的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次深度。
答案 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'
仍然想知道这是否可以通过单行处理。