-
Notifications
You must be signed in to change notification settings - Fork 52
/
README
37 lines (27 loc) · 1.65 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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