aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
authorMichael Koziarski <michael@koziarski.com>2008-02-12 22:42:36 +0000
committerMichael Koziarski <michael@koziarski.com>2008-02-12 22:42:36 +0000
commit46356100d1518c67d005be1fecceb9aea4c72dfd (patch)
tree3be4b7579fe95c45929d3135ea370493519c8c01 /actionpack/lib
parent11787b802a1ea8152507e94940f9af394d343c4c (diff)
downloadrails-46356100d1518c67d005be1fecceb9aea4c72dfd.tar.gz
rails-46356100d1518c67d005be1fecceb9aea4c72dfd.tar.bz2
rails-46356100d1518c67d005be1fecceb9aea4c72dfd.zip
Make sure render :update support the options hash. Closes #11088 [ernesto.jimenez]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8862 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/lib')
-rwxr-xr-xactionpack/lib/action_controller/base.rb8
-rw-r--r--actionpack/lib/action_controller/benchmarking.rb6
-rw-r--r--actionpack/lib/action_controller/layout.rb6
3 files changed, 11 insertions, 9 deletions
diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb
index 34c3ed3a60..7dd449d8a5 100755
--- a/actionpack/lib/action_controller/base.rb
+++ b/actionpack/lib/action_controller/base.rb
@@ -834,14 +834,16 @@ module ActionController #:nodoc:
# All renders take the :status and :location options and turn them into headers. They can even be used together:
#
# render :xml => post.to_xml, :status => :created, :location => post_url(post)
- def render(options = nil, &block) #:doc:
+ def render(options = nil, extra_options = {}, &block) #:doc:
raise DoubleRenderError, "Can only render or redirect once per action" if performed?
if options.nil?
return render_for_file(default_template_name, nil, true)
+ elsif !extra_options.is_a?(Hash)
+ raise RenderError, "You called render with invalid options : #{options}, #{extra_options}"
else
if options == :update
- options = { :update => true }
+ options = extra_options.merge({ :update => true })
elsif !options.is_a?(Hash)
raise RenderError, "You called render with invalid options : #{options}"
end
@@ -910,7 +912,7 @@ module ActionController #:nodoc:
generator = ActionView::Helpers::PrototypeHelper::JavaScriptGenerator.new(@template, &block)
response.content_type = Mime::JS
- render_for_text(generator.to_s)
+ render_for_text(generator.to_s, options[:status])
elsif options[:nothing]
# Safari doesn't pass the headers of the return if the response is zero length
diff --git a/actionpack/lib/action_controller/benchmarking.rb b/actionpack/lib/action_controller/benchmarking.rb
index 5201d31b8b..6916e60e23 100644
--- a/actionpack/lib/action_controller/benchmarking.rb
+++ b/actionpack/lib/action_controller/benchmarking.rb
@@ -41,14 +41,14 @@ module ActionController #:nodoc:
end
protected
- def render_with_benchmark(options = nil, deprecated_status = nil, &block)
+ def render_with_benchmark(options = nil, extra_options = {}, &block)
unless logger
- render_without_benchmark(options, &block)
+ render_without_benchmark(options, extra_options, &block)
else
db_runtime = ActiveRecord::Base.connection.reset_runtime if Object.const_defined?("ActiveRecord") && ActiveRecord::Base.connected?
render_output = nil
- @rendering_runtime = Benchmark::measure{ render_output = render_without_benchmark(options, &block) }.real
+ @rendering_runtime = Benchmark::measure{ render_output = render_without_benchmark(options, extra_options, &block) }.real
if Object.const_defined?("ActiveRecord") && ActiveRecord::Base.connected?
@db_rt_before_render = db_runtime
diff --git a/actionpack/lib/action_controller/layout.rb b/actionpack/lib/action_controller/layout.rb
index 0fbbfa8b05..e1853ad131 100644
--- a/actionpack/lib/action_controller/layout.rb
+++ b/actionpack/lib/action_controller/layout.rb
@@ -243,7 +243,7 @@ module ActionController #:nodoc:
end
protected
- def render_with_a_layout(options = nil, &block) #:nodoc:
+ def render_with_a_layout(options = nil, extra_options = {}, &block) #:nodoc:
template_with_options = options.is_a?(Hash)
if apply_layout?(template_with_options, options) && (layout = pick_layout(template_with_options, options))
@@ -252,7 +252,7 @@ module ActionController #:nodoc:
options = options.merge :layout => false if template_with_options
logger.info("Rendering template within #{layout}") if logger
- content_for_layout = render_with_no_layout(options, &block)
+ content_for_layout = render_with_no_layout(options, extra_options, &block)
erase_render_results
add_variables_to_assigns
@template.instance_variable_set("@content_for_layout", content_for_layout)
@@ -260,7 +260,7 @@ module ActionController #:nodoc:
status = template_with_options ? options[:status] : nil
render_for_text(@template.render_file(layout, true), status)
else
- render_with_no_layout(options, &block)
+ render_with_no_layout(options, extra_options, &block)
end
end