我正在构建一个 Rails 应用程序,它允许用户拥有一个个人文件夹,他们可以在其中上传文件或创建另一个文件夹。
我怎么能做出一条类似的路线
/user/:id/files/:any_path
并匹配这样的路线
/user/2/files/some_folder/a_file.doc
我正在构建一个 Rails 应用程序,它允许用户拥有一个个人文件夹,他们可以在其中上传文件或创建另一个文件夹。
我怎么能做出一条类似的路线
/user/:id/files/:any_path
并匹配这样的路线
/user/2/files/some_folder/a_file.doc
您可以尝试匹配这样的自定义路由:
match '/user/:id/files/*any_path'
此路由将匹配/user/2/files/3
or /user/2/files/long/path/to/3
,设置params[:any_path]
为"3"
or "long/path/to/3"
。
从 Rails 3.1 开始,通配符路由默认总是匹配可选的格式段。例如,如果您有这条路线:
match '*pages' => 'pages#show'
通过请求"/foo/bar.json"
,您的 params[:pages] 将等于"foo/bar"
JSON 的请求格式。如果您想恢复旧的 3.0.x 行为,可以这样提供:format => false
:
match '*pages' => 'pages#show', :format => false
如果你想让格式段强制,所以不能省略,你可以:format => true
这样提供:
match '*pages' => 'pages#show', :format => true