1

我正在构建一个 Rails 应用程序,它允许用户拥有一个个人文件夹,他们可以在其中上传文件或创建另一个文件夹。

我怎么能做出一条类似的路线

/user/:id/files/:any_path

并匹配这样的路线

/user/2/files/some_folder/a_file.doc
4

1 回答 1

5

您可以尝试匹配这样的自定义路由:

match '/user/:id/files/*any_path'

此路由将匹配/user/2/files/3or /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

您可以在Rails 路由中从外部找到此信息和更多详细信息

于 2012-08-23T11:09:40.387 回答