Rails 3路由与令牌匹配

时间:2012-11-26 20:46:28

标签: ruby-on-rails-3 routes

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

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

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

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

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

缺点是在某些情况下未指定格式,这会导致错误,因为格式不匹配。

所以我的问题是......创建这个catchall的正确方法是什么?

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

1 个答案:

答案 0 :(得分:0)

好吧,我想我已经明白了。预先警告,但它很难看......

match '/v:api/*path', to: redirect { |params, request|
  if params[:format]
    "/#{params[:path]}.#{params[:format]}"
  else
    "/#{params[:path]}"
  end
}