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.

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:

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.

Last updated