如何为/ user / 2 / files / any / path / to / a / file制作Rails通配符路由?

时间:2012-08-23 10:51:17

标签: ruby-on-rails ruby ruby-on-rails-3 web-applications routing

我正在构建一个Rails应用程序,让用户可以像个人文件夹一样上传文件或制作其他文件夹。

我怎样才能制作一条与

相似的路线
/user/:id/files/:any_path

并匹配此类路线

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

1 个答案:

答案 0 :(得分:5)

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

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"

从Rails 3.1开始,通配符路由将始终与可选格式段匹配。例如,如果您有此路线:

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

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

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

如果您想使格式段成为必填项,因此无法省略,您可以像这样提供:format => true

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

您可以在Rails routing from the outside in

上找到此信息和更多详细信息