From b00e6a984df51a2f891c2a4c819ac2ab08359eed Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 23 Jun 2007 17:49:18 +0000 Subject: 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 --- .../lib/action_view/helpers/capture_helper.rb | 118 ++++++++++++--------- 1 file changed, 65 insertions(+), 53 deletions(-) (limited to 'actionpack/lib/action_view/helpers/capture_helper.rb') 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: - # - # - # - # layout with js - # - # - # - # <%= yield %> - # - # - # - # 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: + # + # + # <%= @greeting %> + # + # <%= @greeting %> + # + # 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 yield - # 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 yield. # - # 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 yield :authorized anywhere in your templates. + # + # <%= yield :authorized if current_user == nil %> + # + # You can also use these variables in a layout. For example: + # + # + # + # + # My Website + # <%= yield :script %> + # + # + # <%= yield %> + # + # + # + # And now we'll create a view that has a content_for call that + # creates the script identifier. + # + # + # Please login! + # + # <% content_for("script") do %> + # # <% 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. -- cgit v1.2.3