class Metal

Ruby on Rails 8.1.2

Since v3.0.20

Available in: v3.0.20 v3.1.12 v3.2.22.5 v4.0.13 v4.1.16 v4.2.9 v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Action Controller Metal

ActionController::Metal is the simplest possible controller, providing a valid Rack interface without the additional niceties provided by ActionController::Base.

A sample metal controller might look like this:

class HelloController < ActionController::Metal
  def index
    self.response_body = "Hello World!"
  end
end

And then to route requests to your metal controller, you would add something like this to config/routes.rb:

get 'hello', to: HelloController.action(:index)

The ::action method returns a valid Rack application for the Rails router to dispatch to.

Rendering Helpers

By default, ActionController::Metal provides no utilities for rendering views, partials, or other responses aside from some low-level setters such as #response_body=, #content_type=, and #status=. To add the render helpers you’re used to having in a normal controller, you can do the following:

class HelloController < ActionController::Metal
  include AbstractController::Rendering
  include ActionView::Layouts
  append_view_path "#{Rails.root}/app/views"

  def index
    render "hello/index"
  end
end

Redirection Helpers

To add redirection helpers to your metal controller, do the following:

class HelloController < ActionController::Metal
  include ActionController::Redirecting
  include Rails.application.routes.url_helpers

  def index
    redirect_to root_url
  end
end

Other Helpers

You can refer to the modules included in ActionController::Base to see other features you can bring into your metal controller.

Inherits from

AbstractController::Base

Attributes

Methods (defined here)

Private methods

(1) Implementation detail — not part of the public API.

Methods (inherited)

From AbstractController::Base (15)
From ActiveSupport::DescendantsTracker (3)
From Object (17)
From ActiveSupport::NumericWithFormat (2)

Type at least 2 characters to search.

↑↓ navigate · open · esc close