diff options
author | Yehuda Katz <wycats@gmail.com> | 2009-10-10 00:30:25 -1000 |
---|---|---|
committer | Yehuda Katz <wycats@gmail.com> | 2009-10-10 00:31:12 -1000 |
commit | b9ce8216fa849a47ad0b0f99fa510e226a23c12e (patch) | |
tree | f21aa8aade26e0eec775c244e1941701501fc85c /actionpack | |
parent | 6395c7bed2d7eee7c4a2e1836b2d9286e79172e4 (diff) | |
download | rails-b9ce8216fa849a47ad0b0f99fa510e226a23c12e.tar.gz rails-b9ce8216fa849a47ad0b0f99fa510e226a23c12e.tar.bz2 rails-b9ce8216fa849a47ad0b0f99fa510e226a23c12e.zip |
Fix a bug where render :text could not handle yield :symbol. Fixes guides generation
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_view/render/rendering.rb | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/actionpack/lib/action_view/render/rendering.rb b/actionpack/lib/action_view/render/rendering.rb index 0cab035ede..b6f5b9b6d1 100644 --- a/actionpack/lib/action_view/render/rendering.rb +++ b/actionpack/lib/action_view/render/rendering.rb @@ -14,6 +14,7 @@ module ActionView case options when Hash layout = options[:layout] + options[:locals] ||= {} if block_given? return concat(_render_partial(options.merge(:partial => layout), &block)) @@ -25,11 +26,11 @@ module ActionView if file = options[:file] template = find(file, {:formats => formats}) - _render_template(template, layout, :locals => options[:locals] || {}) + _render_template(template, layout, :locals => options[:locals]) elsif inline = options[:inline] _render_inline(inline, layout, options) elsif text = options[:text] - _render_text(text, layout, options) + _render_text(text, layout, options[:locals]) end when :update update_page(&block) @@ -80,16 +81,19 @@ module ActionView def _render_inline(inline, layout, options) handler = Template.handler_class_for_extension(options[:type] || "erb") - template = Template.new(options[:inline], "inline #{options[:inline].inspect}", handler, {}) - locals = options[:locals] || {} + template = Template.new(options[:inline], + "inline #{options[:inline].inspect}", handler, {}) + + locals = options[:locals] content = template.render(self, locals) - content = layout.render(self, locals) {|*name| _layout_for(*name) { content } } if layout - content + _render_text(content, layout, locals) end - def _render_text(text, layout, options) - text = layout.render(self, options[:locals]) { text } if layout - text + def _render_text(content, layout, locals) + content = layout.render(self, locals) do |*name| + _layout_for(*name) { content } + end if layout + content end # This is the API to render a ViewContext's template from a controller. |