2016-08-30 1 views
2

Ich möchte von meinem Controller zurückkehren, wenn entweder eine Überprüfung fehlgeschlagen ist oder ein Parameter mit 400 - bad request fehlt. Also in meinem Controller, wennSchienen 4.2 ActionController: BadRequest benutzerdefinierte Fehlermeldung

if params["patch"].nil? then 
    raise ActionController::BadRequest.new("The Json body needs to be wrapped inside a \"Patch\" key") 
end 

und ich fange diese Fehler in meinem Application Controller mit:

rescue_from ActionController::BadRequest, with: :bad_request 


def bad_request(exception) 
    render status: 400, json: {:error => exception.message}.to_json 
end 

Aber es scheint, als ob ich nicht benutzerdefinierte Nachrichten hinzufügen kann, wenn ActionController::BadRequest erhöht. Bei der Übergabe eines ungültigen Körpers ist die Antwort nur {"error":"ActionController::BadRequest"} und nicht der Hash, den ich zur Verfügung gestellt habe.

In der Konsole bekomme ich das gleiche Verhalten. raise ActiveRecord::RecordNotFound, "foo" tatsächlich erhöht ActiveRecord::RecordNotFound: foo.

Aber raise ActionController::BadRequest, "baa" Ergebnisse in

ActionController::BadRequest: ActionController::BadRequest

Wie kann ich benutzerdefinierte Nachrichten an die BadRequest Ausnahme hinzufügen?

Antwort

2

Versuchen Sie folgendes:

raise ActionController::BadRequest.new(), "The Json body needs to be wrapped inside a \"Patch\" key" 
Verwandte Themen