Module: ActionController::Components

Module | ActionController::Components
In: | lib/action_controller/components.rb

Components allow you to call other actions for their rendered response while executing another action. You can either delegate the entire response rendering or you can mix a partial response in with your other content.

      class WeblogController < ActionController::Base
        # Performs a method and then lets hello_world output its render
        def delegate_action
          do_other_stuff_before_hello_world
          render_component :controller => "greeter",  :action => "hello_world", :params => { :person => "david" }
        end
      end

      class GreeterController < ActionController::Base
        def hello_world
          render :text => "#{params[:person]} says, Hello World!"
        end
      end

The same can be done in a view to do a partial rendering:

      Let's see a greeting:
      <%= render_component :controller => "greeter", :action => "hello_world" %>

It is also possible to specify the controller as a class constant, bypassing the inflector code to compute the controller class at runtime:

<%= render_component :controller => GreeterController, :action => "hello_world" %>

## When to use components

Components should be used with care. They‘re significantly slower than simply splitting reusable parts into partials and conceptually more complicated. Don‘t use components as a way of separating concerns inside a single application. Instead, reserve components to those rare cases where you truly have reusable view and controller elements that can be employed across many applications at once.

So to repeat: Components are a special-purpose approach that can often be replaced with better use of partials and filters.

### Methods

render_component

### Classes and Modules

Module ActionController::Components::ClassMethods
Module ActionController::Components::InstanceMethods

### Public Instance methods

render_component(options)

[Validate]