我有一系列sinatra应用程序设置,每个应用程序负责一件事。
假设我有两个这样的应用程序:
class Foo < Sinatra::Base
get '/' do
'FOO!'
end
end
class Zoo < Sinatra::Base
get '/' do
'ZOO!'
end
get '/zoom' do
# do things
redirect '/'
end
end
现在让我说我有我的config.ru: 要求'./application'
run Rack::URLMap.new('/' => Foo.new, '/zoo' => Zoo.new)
我遇到的问题是,当我尝试在zoom
操作中执行重定向时,我会将其发送到Foo
而不是Zoo
的索引操作。有没有一种干净的方法来执行此操作,以便我的应用程序不需要知道如何为应用程序设置路由?
答案 0 :(得分:3)
您可以使用可配置的重定向。请参阅http://www.sinatrarb.com/2011/03/03/sinatra-1.2.0.html#configurable_redirects。
E.g。
class Zoo < Sinatra::Base
get '/' do
'ZOO!'
end
get '/zoom' do
# do things
redirect to('/')
end
end
或者,如上面链接中所述,通过在Zoo应用程序中启用带前缀的重定向来跳过to()调用:
class Zoo < Sinatra::Base
enable :prefixed_redirects
...