O método render_component já havia sido marcado como deprecated em versões anteriores do Rails, mas na versão 2.3 ele será totalmente removido do framework.
Este método tem a finalidade de fazer com que uma outra action renderize a action em execução. É meio complicado de explicar, então vamos aos famosos exemplos:
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
No exemplo acima estou executando a action delegate_action, mas estou fazendo uso do método render_component para que a resposta da minha action seja criada pela action hello_world que está em um outro controller.
Um outro uso mais prático deste recurso, é usá-lo de dentro de uma view:
<%= render_component :controller => "greeter", :action => "hello_world" %>
Neste caso o render_component agiria como se eu estivesse chamando um partial, quando na verdade estou executando uma action em um controller.
Por que um método tão legal está sendo removido do Rails? A resposta é muito simples: ele é muito lento e tem a mania de deixar as coisas um pouco confusas. Partials e filtros podem ser usados para a mesma finalidade e oferecem uma performance muito melhor, além de mais clareza ao código.
Se ainda assim, você desejar usar render_component ou se já está usando e deseja migrar seu projeto, foi criado um plugin que devolve esta funcionalidade ao Rails.