在Sinatra,我如何将控制传递到命名路线?

时间:2012-12-03 19:54:27

标签: ruby sinatra

从那里我发现pass将自动确定控件传递给的路径。

如何将控制权传递给指定路线?

这对我不起作用:

get '/:title.:ext' do
  pass "/old/#{params[:title]}" if params[:ext] == 'php'
  # more logic
end

1 个答案:

答案 0 :(得分:1)

您可以使用redirect,如果您确实希望更改用户浏览器中的URL,或者如果您希望从最终用户隐藏转发(即URL),则可以直接使用call!在他们的浏览器中保持不变,但在内部请求被转发到应用程序中的不同路由。)

所以在你的情况下,它可能是

redirect "/old/#{params[:title]}" if params[:ext] == 'php'

call! env.merge('PATH_INFO' => "/old/#{params[:title]}") if params[:ext] == 'php'