Documentation

Halt!

Browse documentation

Read this page as HTML, Markdown, or structured JSON—or open the published Markdown with an AI assistant. Gemini receives the prompt through your clipboard because its signed-out page does not reliably prefill URL text; paste when the new tab opens. External assistants need the public site URL.

Halt!

Sometimes we don't want a request to continue executing; maybe an error has occurred or perhaps an operation is taking too long and we would like to abort the execution of the request. Amber provides a halt! method to controllers.

When you want a request to cease and return a particular message rather then rendering a page, you use Amber halt! to stop the request from continue execution.

Crystal
class UserController < ApplicationController
  def index
    halt!(403, "Forbidden") if params[:user_id].nil?
    render "index.slang"
  end
end

A status code of 403 was returned, and the content in render will not be delivered to the client.

The next time you’re building an Amber application, consider using halt to simplify error handling.

Halt! and redirect_to

Unlike other frameworks Amber redirect_to stops the current execution of the request and performs the redirection at that given time.

For example, in other frameworks you will have to do something similar to:

Crystal
class UserController < ApplicationController
  def index
    if some_condition
        if some_condition
            redirect_to(path_one) and return
            # Or another approach
            return redirect_to(path_one)
        end
    end
  end
end

As you probably noticed there is an explicit return, this explicit return is something that is not needed with Amber. Since redirect_to uses the halt! method in the background.