如何为/user/2/files/any/path/to/a/file创建Rails通配符路由



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

我如何才能制定一条与相似的路线

/user/:id/files/:any_path

并匹配类似的路线

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

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

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

该路由将匹配/user/2/files/3/user/2/files/long/path/to/3,将params[:any_path]设置为"3""long/path/to/3"

从Rails3.1开始,默认情况下通配符路由将始终与可选格式段匹配。例如,如果您有以下路线:

match '*pages' => 'pages#show'

通过请求"/foo/bar.json",您的params[:pages]将等于请求格式为JSON的"foo/bar"。如果你想恢复旧的3.0.x行为,你可以提供这样的:format => false

match '*pages' => 'pages#show', :format => false

如果你想让格式段成为强制性的,所以它不能被省略,你可以提供:format => true,如下所示:

match '*pages' => 'pages#show', :format => true

您可以在

中的Rails外部路由中找到此信息和更多详细信息

最新更新