aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTieg Zaharia <tieg@kickstarter.com>2012-04-16 13:53:51 -0400
committerTieg Zaharia <tieg@kickstarter.com>2012-04-16 13:56:32 -0400
commitdfab28b2ca28b477f83befbba639adb6d15c8ce0 (patch)
tree7f5b05a27f132b600326c19403c87b48aa9cc881
parenta0c2cfdc51e16fc39c1d3b1e78bdd257188fa04e (diff)
downloadrails-dfab28b2ca28b477f83befbba639adb6d15c8ce0.tar.gz
rails-dfab28b2ca28b477f83befbba639adb6d15c8ce0.tar.bz2
rails-dfab28b2ca28b477f83befbba639adb6d15c8ce0.zip
catch nil.to_sym errors in partial_renderer, and raise ArgumentError instead
-rw-r--r--actionpack/lib/action_view/renderer/partial_renderer.rb2
-rw-r--r--actionpack/test/template/render_test.rb9
2 files changed, 10 insertions, 1 deletions
diff --git a/actionpack/lib/action_view/renderer/partial_renderer.rb b/actionpack/lib/action_view/renderer/partial_renderer.rb
index 8b53867aea..4d57a8f033 100644
--- a/actionpack/lib/action_view/renderer/partial_renderer.rb
+++ b/actionpack/lib/action_view/renderer/partial_renderer.rb
@@ -451,7 +451,7 @@ module ActionView
end
def retrieve_variable(path)
- variable = @options[:as].try(:to_sym) || path[%r'_?(\w+)(\.\w+)*$', 1].to_sym
+ variable = @options[:as].try(:to_sym) || path[%r'_?(\w+)(\.\w+)*$', 1].try(:to_sym)
variable_counter = :"#{variable}_counter" if @collection
[variable, variable_counter]
end
diff --git a/actionpack/test/template/render_test.rb b/actionpack/test/template/render_test.rb
index 122b07d348..11f0e7472a 100644
--- a/actionpack/test/template/render_test.rb
+++ b/actionpack/test/template/render_test.rb
@@ -161,6 +161,15 @@ module RenderTestCases
"and is followed by any combinations of letters, numbers, or underscores.", e.message
end
+ def test_render_partial_with_missing_filename
+ @view.render(:partial => "test/")
+ flunk "Render did not raise ArgumentError"
+ rescue ArgumentError => e
+ assert_equal "The partial name (test/) is not a valid Ruby identifier; " +
+ "make sure your partial name starts with a letter or underscore, " +
+ "and is followed by any combinations of letters, numbers, or underscores.", e.message
+ end
+
def test_render_partial_with_incompatible_object
@view.render(:partial => nil)
flunk "Render did not raise ArgumentError"