我正在尝试设置一个保留请求格式的重定向。但是,在某些情况下,未指定格式,我也需要考虑到这一点。
我认为格式是路径的一部分,所以一开始我就这样设置......
match 'v:api/*path', :to => redirect("/%{path}")
但是,格式不是请求的一部分。因此,当指定格式时,将其更改为此工作。
match 'v:api/*path', :to => redirect("/%{path}.%{format}")
缺点是在某些情况下未指定格式,这会导致错误,因为格式不匹配。
所以我的问题是......创建这个catchall的正确方法是什么?
意图是如果指定版本号不存在该路由的版本,则应该转到根路由,而不指定版本。
答案 0 :(得分:0)
好吧,我想我已经明白了。预先警告,但它很难看......
match '/v:api/*path', to: redirect { |params, request|
if params[:format]
"/#{params[:path]}.#{params[:format]}"
else
"/#{params[:path]}"
end
}