All'interno del controller è possibile utilizzare solo per rescue_from
errori che si alzano all'interno del tuo controller (in azioni, viste o filtri).
Sembra che gli incrementi di ActionController::BadRequest
prima che il routing passi la richiesta al controller (da qualche parte nello stack del middleware).
È possibile elaborare tali errori se si scrive proprio middleware come questo:
class HandleErrorsMiddleware
def initialize(app)
@app = app
end
def call(env)
@app.call(env)
rescue ActionController::BadRequest
ApplicationController.action(:raise_bad_request).call(env)
end
end
raise_bad_request
dovrebbe essere metodo pubblico in ApplicationController
Si dovrebbe aggiungere questo middleware in config/application.rb
config.middleware.insert_before 'ActionDispatch::ParamsParser', 'HandleErrorsMiddleware'
Do you avere altre dichiarazioni di rescue_from? L'ordine conta. –
Sì, ma non sono sicuro di capire come? Ho 3: rescue_from ActionDispatch :: :: remoteip IpSpoofAttackError, con:: ip_spoof_error rescue_from ActionController :: UnknownFormat, con:: raise_not_found rescue_from ActionController :: BadRequest, con:: raise_not_found –
Stesso problema qui, non poteva risolverlo. .. – Dorian