Wewnątrz kontrolera można użyć tylko dla rescue_from
błędy, które pojawiają się wewnątrz kontrolera (w akcjach, widokach lub filtrach).
Wygląda na to, że przed routingiem przekazuje żądanie do kontrolera (gdzieś w stosie oprogramowania pośredniczącego) pod numer ActionController::BadRequest
.
można przetwarzać takie błędy, jeśli piszesz własny middleware takiego:
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
powinna być metoda publicznego w ApplicationController
Należy dodać ten middleware w config/application.rb
config.middleware.insert_before 'ActionDispatch::ParamsParser', 'HandleErrorsMiddleware'
Czy mieć inne instrukcje rescue_from? Zamów sprawy. –
Mam, ale nie jestem pewien, czy rozumiem jak? Mam 3: rescue_from ActionDispatch :: RemoteIp :: IpSpoofAttackError, z:: ip_spoof_error rescue_from ActionController :: UnknownFormat, z:: raise_not_found rescue_from ActionController :: BadRequest, z:: raise_not_found –
Ten sam problem tutaj, nie mógł go rozwiązać. .. – Dorian