Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 Rails 3与令牌的路由匹配_Ruby On Rails 3_Routes - Fatal编程技术网

Ruby on rails 3 Rails 3与令牌的路由匹配

Ruby on rails 3 Rails 3与令牌的路由匹配,ruby-on-rails-3,routes,Ruby On Rails 3,Routes,我正在尝试设置一个重定向,以保持请求的格式。但是,在某些情况下,没有指定格式,我也需要对此进行说明 我认为格式是路径的一部分,所以起初我是这样设置的 match 'v:api/*path', :to => redirect("/%{path}") 但是,格式不是请求的一部分。因此,当指定了格式时,将其更改为该格式将起作用 match 'v:api/*path', :to => redirect("/%{path}.%{format}") 缺点是在某些情况下没有指定格式,这会导致错

我正在尝试设置一个重定向,以保持请求的格式。但是,在某些情况下,没有指定格式,我也需要对此进行说明

我认为格式是路径的一部分,所以起初我是这样设置的

match 'v:api/*path', :to => redirect("/%{path}")
但是,格式不是请求的一部分。因此,当指定了格式时,将其更改为该格式将起作用

match 'v:api/*path', :to => redirect("/%{path}.%{format}")
缺点是在某些情况下没有指定格式,这会导致错误,因为格式不匹配

所以我的问题是。。。创建此catchall的正确方法是什么


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

好的,我想我已经解决了。事先警告一下,虽然很难看

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