2012-01-06 60 views
1

我有一个简单的Sinatra应用程序,包含常规和JSON API部分。我想创建的差错块:在Sinatra中报告不同内容类型的错误

error do 
    # ... 
end 

,将在格式返回JSON {:误差=>“一些文本”}的情况下,客户端发送Accept首集到应用/ JSON,并保持所有其他情况下的默认Sinatra行为。

回答

1

你可以读取错误块作为参数传递给一个条件中的标题,并选择输出一个辅助方法:

def content_to(output, type=nil) 
    case type 
    when "application/json" 
     #... 
    else 
     output 
    end... 

error do 
    content_to("Whoops!", header["Accept"]) 
end 
+0

只是想我要补充,你可能想还要设置内容类型,例如'content_type:json'返回时。 – iain 2012-01-09 10:07:17

+0

请参阅Sinatra :: RespondWith获得现成的帮手http://rubydoc.info/gems/sinatra-contrib/1.3.1/frames – iain 2012-01-12 02:19:44