2

私は一連のシナトラアプリケーションを持っており、それぞれが1つのことを担当するように設定されています。

このような2つのアプリがあるとしましょう:

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が次のようになっているとしましょう:require'./application'

run Rack::URLMap.new('/' => Foo.new, '/zoo' => Zoo.new)

私が遭遇している問題は、の代わりにzoomインデックスアクションに送信されるアクションでリダイレクトを実行しようとしたときです。私のアプリケーションがアプリのルートがどのように設定されているかを知る必要がないように、これを行うためのクリーンな方法はありますか?FooZoo

4

1 に答える 1

3

構成可能なリダイレクトを使用できます。http://www.sinatrarb.com/2011/03/03/sinatra-1.2.0.html#configurable_redirectsを参照してください。

例えば

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
    ...
于 2013-02-12T12:55:37.373 に答える