Sinatra路由例外

Eth*_*aub 4 ruby routing sinatra

我希望能够做到以下几点:

get '/:slug' do
  haml :page
end

get '/administration' do
  haml :admin
end
Run Code Online (Sandbox Code Playgroud)

有没有办法可以get '/:slug' do让/管理有例外?我意识到你可以使用if else语句来做到这一点:

get '/:slug' do
  if params[:slug] == 'administration'
    haml :admin
  else
    haml :page
  end
end
Run Code Online (Sandbox Code Playgroud)

但那看起来不是很干净.有没有办法让路线有例外?

Mla*_*vić 7

Sinatra应该尊重路线的顺序,所以如果你把/administration路线放在第一位,并且一个请求与之匹配,那么根本get '/:slug'就不会被召唤.