我有Sinatra基础应用程序,如:
class MyApp < Sinatra::Base
get '/' do
..
end
get '/login' do
..
end
end
和一些子模块如
class Protected < MyApp
before '/*' do
redirect('/login') unless logged_in
end
get '/list' do
...
end
end
我的config.ru如下所示
map "/" do
run MyApp
end
map "/protected" do
run Protected
end
我在尝试访问/protected/list
时遇到重定向循环,因为它尝试从主应用程序重定向到 / protected / login 而不是 / login 。
我怎么能强迫它做正确的重定向?我知道我可以使用redirect to('../login')
,但看起来很糟糕。
答案 0 :(得分:2)
imo与Sinatra你只能将URL分配给常量然后引用它们。
像:
MAIN_URL = '/'
PROTECTED_URL = '/protected'
class Protected < MyApp
before '/*' do
redirect( MAIN_URL + 'login') unless logged_in
end
get '/list' do
...
end
map MAIN_URL do
run MyApp
end
map PROTECTED_URL do
run Protected
end
丑陋。
我建议改用Espresso。
在路由以及其他框架很糟糕的其他方面非常明智。
答案 1 :(得分:0)
来自/config/application.rb中的一个应用
android:name=".MainActivity"
您也可以在config.ru中定义该常量,就像在第一个答案中一样。