aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view/helpers/capture_helper.rb
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2007-06-23 17:49:18 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2007-06-23 17:49:18 +0000
commitb00e6a984df51a2f891c2a4c819ac2ab08359eed (patch)
tree963bdbbc51159f294be459788c2a57eef0624f1d /actionpack/lib/action_view/helpers/capture_helper.rb
parent8aefa3ee75e261488a39ea9d26a767c9db696c20 (diff)
downloadrails-b00e6a984df51a2f891c2a4c819ac2ab08359eed.tar.gz
rails-b00e6a984df51a2f891c2a4c819ac2ab08359eed.tar.bz2
rails-b00e6a984df51a2f891c2a4c819ac2ab08359eed.zip
Massive documentation update for all helpers (closes #8223, #8177, #8175, #8108, #7977, #7972, #7971, #7969) [jeremymcanally]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7106 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/lib/action_view/helpers/capture_helper.rb')
-rw-r--r--actionpack/lib/action_view/helpers/capture_helper.rb118
1 files changed, 65 insertions, 53 deletions
diff --git a/actionpack/lib/action_view/helpers/capture_helper.rb b/actionpack/lib/action_view/helpers/capture_helper.rb
index 91cff4f981..7cf2b02659 100644
--- a/actionpack/lib/action_view/helpers/capture_helper.rb
+++ b/actionpack/lib/action_view/helpers/capture_helper.rb
@@ -1,58 +1,36 @@
module ActionView
module Helpers
- # Capture lets you extract parts of code which
- # can be used in other points of the template or even layout file.
- #
- # == Capturing a block into an instance variable
- #
- # <% @script = capture do %>
- # [some html...]
- # <% end %>
- #
- # == Add javascript to header using content_for
- #
- # content_for("name") is a wrapper for capture which will
- # make the fragment available by name to a yielding layout or template.
- #
- # layout.erb:
- #
- # <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- # <head>
- # <title>layout with js</title>
- # <script type="text/javascript">
- # <%= yield :script %>
- # </script>
- # </head>
- # <body>
- # <%= yield %>
- # </body>
- # </html>
- #
- # view.erb
- #
- # This page shows an alert box!
- #
- # <% content_for("script") do %>
- # alert('hello world')
- # <% end %>
- #
- # Normal view text
+ # CaptureHelper exposes methods to let you extract generated markup which
+ # can be used in other parts of a template or layout file.
+ # It provides a method to capture blocks into variables through capture and
+ # a way to capture a block of code for use in a layout through content_for.
module CaptureHelper
- # Capture allows you to extract a part of the template into an
- # instance variable. You can use this instance variable anywhere
- # in your templates and even in your layout.
+ # The capture method allows you to extract a part of the template into a
+ # variable. You can then use this value anywhere in your templates or layout.
#
- # Example of capture being used in a .erb page:
+ # ==== Examples
+ # The capture method can be used in RHTML (ERb) templates...
#
# <% @greeting = capture do %>
- # Welcome To my shiny new web page!
+ # Welcome to my shiny new web page! The date and time is
+ # <%= Time.now %>
# <% end %>
#
- # Example of capture being used in a .builder page:
+ # ...and Builder (RXML) templates.
#
- # @greeting = capture do
- # 'Welcome To my shiny new web page!'
+ # @timestamp = capture do
+ # "The current timestamp is #{Time.now}."
# end
+ #
+ # You can then use the content as a variable anywhere else. For
+ # example:
+ #
+ # <html>
+ # <head><title><%= @greeting %></title></head>
+ # <body>
+ # <b><%= @greeting %></b>
+ # </body></html>
+ #
def capture(*args, &block)
# execute the block
begin
@@ -68,19 +46,53 @@ module ActionView
end
end
- # Calling content_for stores the block of markup for later use.
- # Subsequently, you can make calls to it by name with <tt>yield</tt>
- # in another template or in the layout.
+ # Calling content_for stores the block of markup in an identifier for later use.
+ # You can make subsequent calls to the stored content in another template or in the layout
+ # by calling it by name with <tt>yield</tt>.
#
- # Example:
+ # ==== Examples
#
- # <% content_for("header") do %>
- # alert('hello world')
+ # <% content_for("authorized") do %>
+ # alert('You are not authorized for that!')
+ # <% end %>
+ #
+ # You can then use <tt>yield :authorized</tt> anywhere in your templates.
+ #
+ # <%= yield :authorized if current_user == nil %>
+ #
+ # You can also use these variables in a layout. For example:
+ #
+ # <!-- This is the layout -->
+ # <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ # <head>
+ # <title>My Website</title>
+ # <%= yield :script %>
+ # </head>
+ # <body>
+ # <%= yield %>
+ # </body>
+ # </html>
+ #
+ # And now we'll create a view that has a content_for call that
+ # creates the <tt>script</tt> identifier.
+ #
+ # <!-- This is our view -->
+ # Please login!
+ #
+ # <% content_for("script") do %>
+ # <script type="text/javascript">alert('You are not authorized for this action!')</script>
# <% end %>
#
- # You can use yield :header anywhere in your templates.
+ # Then in another view you may want to do something like this:
+ #
+ # <%= link_to_remote 'Logout', :action => 'logout' %>
+ #
+ # <% content_for("script") do %>
+ # <%= javascript_include_tag :defaults %>
+ # <% end %>
#
- # <%= yield :header %>
+ # That will include Prototype and Scriptaculous into the page; this technique
+ # is useful if you'll only be using these scripts on a few views.
#
# NOTE: Beware that content_for is ignored in caches. So you shouldn't use it
# for elements that are going to be fragment cached.