File tree Expand file tree Collapse file tree 2 files changed +17
-3
lines changed Expand file tree Collapse file tree 2 files changed +17
-3
lines changed Original file line number Diff line number Diff line change @@ -77,9 +77,12 @@ def view_assigns
77
77
# render "foo/bar" to render :file => "foo/bar".
78
78
# :api: plugin
79
79
def _normalize_args ( action = nil , options = { } )
80
- if action . respond_to? ( :permitted? ) && action . permitted?
81
- raise ArgumentError , "render parameters are not permitted"
82
- action
80
+ if action . respond_to? ( :permitted? )
81
+ if action . permitted?
82
+ action
83
+ else
84
+ raise ArgumentError , "render parameters are not permitted"
85
+ end
83
86
elsif action . is_a? ( Hash )
84
87
action
85
88
else
Original file line number Diff line number Diff line change @@ -56,6 +56,10 @@ def dynamic_render
56
56
render params [ :id ] # => String, AC:Params
57
57
end
58
58
59
+ def dynamic_render_permit
60
+ render params [ :id ] . permit ( :file )
61
+ end
62
+
59
63
def dynamic_render_with_file
60
64
# This is extremely bad, but should be possible to do.
61
65
file = params [ :id ] # => String, AC:Params
@@ -276,6 +280,13 @@ def test_dynamic_render
276
280
end
277
281
end
278
282
283
+ def test_permitted_dynamic_render_file_hash
284
+ assert File . exist? ( File . join ( File . dirname ( __FILE__ ) , '../../test/abstract_unit.rb' ) )
285
+ response = get :dynamic_render_permit , { id : { file : '../\\../test/abstract_unit.rb' } }
286
+ assert_equal File . read ( File . join ( File . dirname ( __FILE__ ) , '../../test/abstract_unit.rb' ) ) ,
287
+ response . body
288
+ end
289
+
279
290
def test_dynamic_render_file_hash
280
291
assert_raises ArgumentError do
281
292
get :dynamic_render , { id : { file : '../\\../test/abstract_unit.rb' } }
You can’t perform that action at this time.
0 commit comments