0

我正在尝试设置一个保留请求格式的重定向。但是,在某些情况下,没有指定格式,我也需要考虑这一点。

我认为格式是路径的一部分,所以一开始我是这样设置的......

match 'v:api/*path', :to => redirect("/%{path}")

但是,格式不是请求的一部分。因此,当指定格式时,将其更改为 this 将起作用。

match 'v:api/*path', :to => redirect("/%{path}.%{format}")

缺点是在某些情况下没有指定格式,这会导致错误,因为它无法匹配格式。

所以我的问题是......创建这个包罗万象的正确方法是什么?

目的是,如果指定了版本号,而该路由的版本不存在,则它应该转到根路由,而不指定版本。

4

1 回答 1

0

好吧,我想我已经想通了。预先警告,虽然它很丑...

match '/v:api/*path', to: redirect { |params, request|
  if params[:format]
    "/#{params[:path]}.#{params[:format]}"
  else
    "/#{params[:path]}"
  end
}
于 2012-11-26T21:00:56.013 回答