2014-01-15 28 views
7

我有400個狀態碼自定義錯誤消息設置狀態代碼:在Sinatra的自定義錯誤塊

get '/do' do 
    raise ParamXMissingError unless params['x'] 
end 

error ParamXMissingError do 
    haml :custom_error_page 
end 

我想ParamXMissingError爲400,但是當我運行上面的代碼,並檢查通過Firefox的網絡工具,看起來Sinatra實際上是返回500,而不是400.我如何讓它顯示custom_error_page.haml並返回400?

最好能夠從錯誤塊內部處理狀態碼和頁面,而不是在籌集ParamXMissingError時撒上的東西。例如,這將是重複性的,而不是一個好的解決方案:halt 400, haml(:custom_error_page)

回答

13

Doh。所有我需要的是設置status 400

error ParamXMissingError do 
    status 400 
    haml :custom_error_page 
end 
+0

這不工作對我來說,做一個Ajax請求的時候,我仍然得到200S :(當然,我在一個正常的'POST'行動,雖然這樣做。 – Thermatix