2014-01-15 7 views
7

ich eine benutzerdefinierte Fehlermeldung für 400-Statuscode haben:Einstellung Statuscode in Block Sinatras benutzerdefinierte Fehler

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

error ParamXMissingError do 
    haml :custom_error_page 
end 

I ParamXMissingError wollen 400 sein, aber wenn ich laufe den obigen Code, und prüfen Sie durch Werkzeuge Firefox Netzwerk scheint Sinatra tatsächlich 500, nicht 400 zurückzugeben. Wie kann ich die custom_error_page.haml anzeigen lassen und 400 zurückgeben?

Vorzugsweise wäre es schön, den Statuscode und die Seite aus dem Fehlerblock heraus zu behandeln, nicht etwas, das ich beim Erhöhen von ParamXMissingError streuen würde. Zum Beispiel wäre dies wiederholend und keine gute Lösung: halt 400, haml(:custom_error_page)

Antwort

13

Doh. Alles was ich brauche ist status 400 zu setzen:

error ParamXMissingError do 
    status 400 
    haml :custom_error_page 
end 
+0

Das ist für mich nicht funktioniert, wenn eine Ajax-Anforderung zu tun, habe ich noch 200s bekommen :(Natürlich habe ich dies allerdings in einer normalen 'Post' Aktion tue.. – Thermatix

Verwandte Themen