Added :locals support for render :inline #2463 [mdabney@cavoksolutions.com]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2567 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson 2005-10-13 20:26:39 +00:00
parent e646786a76
commit 43b6a74fb1
3 changed files with 16 additions and 3 deletions

View File

@ -1,5 +1,7 @@
*SVN*
* Added :locals support for render :inline #2463 [mdabney@cavoksolutions.com]
* Unset the X-Requested-With header when using the xhr wrapper in functional tests so that future requests aren't accidentally xhr'ed #2352 [me@julik.nl, Sam Stephenson]
* Unescape paths before writing cache to file system. #1877. [Damien Pollet]

View File

@ -590,7 +590,7 @@ module ActionController #:nodoc:
render_file(template, options[:status], true)
elsif inline = options[:inline]
render_template(inline, options[:status], options[:type])
render_template(inline, options[:status], options[:type], options[:locals] || {})
elsif action_name = options[:action]
render_action(action_name, options[:status], options[:layout])
@ -637,9 +637,9 @@ module ActionController #:nodoc:
render_text(@template.render_file(template_path, use_full_path), status)
end
def render_template(template, status = nil, type = :rhtml)
def render_template(template, status = nil, type = :rhtml, local_assigns = {})
add_variables_to_assigns
render_text(@template.render_template(type, template), status)
render_text(@template.render_template(type, template, nil, local_assigns), status)
end
def render_text(text = nil, status = nil)

View File

@ -75,6 +75,11 @@ class TestController < ActionController::Base
render_template "Hello: <%= params[:name] %>"
end
def accessing_local_assigns_in_inline_template
name = params[:local_name]
render :inline => "<%= 'Goodbye, ' + local_name %>", :locals => { :local_name => name }
end
def rescue_action(e) raise end
private
@ -206,6 +211,12 @@ class RenderTest < Test::Unit::TestCase
assert_equal "Hello: David", process_request.body
end
def test_accessing_local_assigns_in_inline_template
@request.action = "accessing_local_assigns_in_inline_template"
@request.query_parameters[:local_name] = "Local David"
assert_equal "Goodbye, Local David", process_request.body
end
private
def process_request
TestController.process(@request, @response)