From 8a130edb0f7b3aacf74d080d3da3b2d871f650d6 Mon Sep 17 00:00:00 2001 From: grentis Date: Thu, 29 Dec 2011 21:58:55 +0100 Subject: content_for with flush parameter --- .../lib/action_view/helpers/capture_helper.rb | 37 +++++++++++++++++----- 1 file changed, 29 insertions(+), 8 deletions(-) (limited to 'actionpack/lib/action_view') diff --git a/actionpack/lib/action_view/helpers/capture_helper.rb b/actionpack/lib/action_view/helpers/capture_helper.rb index 0a0d31dded..17bbfe2efd 100644 --- a/actionpack/lib/action_view/helpers/capture_helper.rb +++ b/actionpack/lib/action_view/helpers/capture_helper.rb @@ -81,8 +81,8 @@ module ActionView # <%# This is the layout %> # # - # My Website - # <%= yield :script %> + # My Website + # <%= yield :script %> # # # <%= yield %> @@ -110,7 +110,7 @@ module ActionView # That will place +script+ tags for your default set of JavaScript files on the page; # this technique is useful if you'll only be using these scripts in a few views. # - # Note that content_for concatenates the blocks it is given for a particular + # Note that content_for concatenates (default) the blocks it is given for a particular # identifier in order. For example: # # <% content_for :navigation do %> @@ -127,16 +127,37 @@ module ActionView # # # + # If the flush parameter is true content_for replaces the blocks it is given. For example: + # + # <% content_for :navigation do %> + #
  • <%= link_to 'Home', :action => 'index' %>
  • + # <% end %> + # + # <%# Add some other content, or use a different template: %> + # + # <% content_for :navigation, true do %> + #
  • <%= link_to 'Login', :action => 'login' %>
  • + # <% end %> + # + # Then, in another template or layout, this code would render only the last link: + # + # + # # Lastly, simple content can be passed as a parameter: # # <% content_for :script, javascript_include_tag(:defaults) %> # # WARNING: content_for is ignored in caches. So you shouldn't use it # for elements that will be fragment cached. - def content_for(name, content = nil, &block) + def content_for(name, content = nil, flush = false, &block) if content || block_given? - content = capture(&block) if block_given? - @view_flow.append(name, content) if content + if block_given? + flush = content if content + content = capture(&block) + end + if content + flush ? @view_flow.set(name, content) : @view_flow.append(name, content) + end nil else @view_flow.get(name) @@ -164,8 +185,8 @@ module ActionView # <%# This is the layout %> # # - # My Website - # <%= yield :script %> + # My Website + # <%= yield :script %> # # # <%= yield %> -- cgit v1.2.3 From ec2cf2499aac5992f09182b0d2353ebf0c733374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Andr=C3=A9s?= Date: Fri, 30 Dec 2011 11:00:04 +0100 Subject: Fixed documentation error in code examples from form_tag_helper.rb --- actionpack/lib/action_view/helpers/form_tag_helper.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/action_view') diff --git a/actionpack/lib/action_view/helpers/form_tag_helper.rb b/actionpack/lib/action_view/helpers/form_tag_helper.rb index bb753ae27a..e3ad96ec1b 100644 --- a/actionpack/lib/action_view/helpers/form_tag_helper.rb +++ b/actionpack/lib/action_view/helpers/form_tag_helper.rb @@ -47,7 +47,7 @@ module ActionView # <% end -%> # # =>
    # - # <%= form_tag('/posts', :remote => true) %> + # <%= form_tag('/posts', :remote => true) %> # # =>
    # # form_tag('http://far.away.com/form', :authenticity_token => false) @@ -577,7 +577,7 @@ module ActionView # # ==== Examples # number_field_tag 'quantity', nil, :in => 1...10 - # => + # # => def number_field_tag(name, value = nil, options = {}) options = options.stringify_keys options["type"] ||= "number" -- cgit v1.2.3 From 18ed37b9259107b7ddd608a4a56b288b14a47c1b Mon Sep 17 00:00:00 2001 From: Vishnu Atrai Date: Sat, 31 Dec 2011 01:12:53 +0530 Subject: fiber is available in ruby19 --- actionpack/lib/action_view/renderer/streaming_template_renderer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/action_view') diff --git a/actionpack/lib/action_view/renderer/streaming_template_renderer.rb b/actionpack/lib/action_view/renderer/streaming_template_renderer.rb index 1ccf5a8ddb..4b66f66e2d 100644 --- a/actionpack/lib/action_view/renderer/streaming_template_renderer.rb +++ b/actionpack/lib/action_view/renderer/streaming_template_renderer.rb @@ -1,7 +1,7 @@ # 1.9 ships with Fibers but we need to require the extra # methods explicitly. We only load those extra methods if # Fiber is available in the first place. -require 'fiber' if defined?(Fiber) +require 'fiber' module ActionView # == TODO -- cgit v1.2.3 From 80be90f3de9d4c451ba7027a8abaf9e095b1c33f Mon Sep 17 00:00:00 2001 From: Xavier Noria Date: Sat, 31 Dec 2011 10:37:01 +0100 Subject: removes comment obsoleted by 18ed37b --- actionpack/lib/action_view/renderer/streaming_template_renderer.rb | 3 --- 1 file changed, 3 deletions(-) (limited to 'actionpack/lib/action_view') diff --git a/actionpack/lib/action_view/renderer/streaming_template_renderer.rb b/actionpack/lib/action_view/renderer/streaming_template_renderer.rb index 4b66f66e2d..f46aabd2be 100644 --- a/actionpack/lib/action_view/renderer/streaming_template_renderer.rb +++ b/actionpack/lib/action_view/renderer/streaming_template_renderer.rb @@ -1,6 +1,3 @@ -# 1.9 ships with Fibers but we need to require the extra -# methods explicitly. We only load those extra methods if -# Fiber is available in the first place. require 'fiber' module ActionView -- cgit v1.2.3