public
Description: Components allow you to call other actions for their rendered response while executing another action
Homepage: http://rubyonrails.com/
Clone URL: git://github.com/rails/render_component.git
name age message
file README Fri Aug 29 05:40:18 -0700 2008 Initial commit [lifo]
file Rakefile Fri Aug 29 05:40:18 -0700 2008 Initial commit [lifo]
file init.rb Fri Aug 29 05:40:18 -0700 2008 Initial commit [lifo]
directory lib/ Mon Dec 29 17:07:43 -0800 2008 Get rid of 'Object#send!'. It was originally ad... [dpowell]
directory test/ Mon Dec 29 17:10:14 -0800 2008 Require rubygems instead of lifo's rails [lifo]
README
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.

Copyright (c) 2007 David Heinemeier Hansson, released under the MIT license