从sinatra中的do块返回不同的值

时间:2010-10-06 08:46:19

标签: ruby sinatra

有没有办法停止执行并在sinatra中的before do块中返回一个不同的值?

before do
   # code is here
   # I would like to 'return "Message"'
   # I would like "/home" to not get called.
end



// rest of the code

get '/home' do

end

2 个答案:

答案 0 :(得分:9)

before do
  halt 401, {'Content-Type' => 'text/plain'}, 'Message!'
end

如果需要,您可以仅指定状态,此处为状态,标题和正文的示例

答案 1 :(得分:2)

http://www.sinatrarb.com/intro过滤器部分

  

之前评估过滤器之前   每个请求都在上下文中   请求并可以修改请求和   响应。设置实例变量   过滤器可通过路线访问   模板:

  before do
    @note = 'Hi!'
    request.path_info = '/foo/bar/baz'
  end

  get '/foo/*' do
    @note #=> 'Hi!'
    params[:splat] #=> 'bar/baz'
  end