mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Make ActionController#render(string) work as a shortcut for render :file => string. [#1435]
Examples: # Instead of render(:file => '/Users/lifo/home.html.erb') render('/Users/lifo/home.html.erb') Note : Filename must begin with a forward slash ('/')
This commit is contained in:
parent
dd0753458f
commit
061952392a
3 changed files with 36 additions and 9 deletions
|
@ -1,5 +1,12 @@
|
|||
*2.3.0 [Edge]*
|
||||
|
||||
* Make ActionController#render(string) work as a shortcut for render :file => string. [#1435] [Pratik Naik] Examples:
|
||||
|
||||
# Instead of render(:file => '/Users/lifo/home.html.erb')
|
||||
render('/Users/lifo/home.html.erb')
|
||||
|
||||
Note : Filename must begin with a forward slash ('/')
|
||||
|
||||
* Add :prompt option to date/time select helpers. #561 [Sam Oliver]
|
||||
|
||||
* Fixed that send_file shouldn't set an etag #1578 [Hongli Lai]
|
||||
|
|
|
@ -865,6 +865,13 @@ module ActionController #:nodoc:
|
|||
return render(:file => default_template, :layout => true)
|
||||
elsif options == :update
|
||||
options = extra_options.merge({ :update => true })
|
||||
elsif options.is_a?(String)
|
||||
case options.index('/')
|
||||
when 0
|
||||
extra_options[:file] = options
|
||||
end
|
||||
|
||||
options = extra_options
|
||||
end
|
||||
|
||||
layout = pick_layout(options)
|
||||
|
@ -1183,7 +1190,7 @@ module ActionController #:nodoc:
|
|||
end
|
||||
|
||||
def validate_render_arguments(options, extra_options)
|
||||
if options && options != :update && !options.is_a?(Hash)
|
||||
if options && options != :update && !options.is_a?(String) && !options.is_a?(Hash)
|
||||
raise RenderError, "You called render with invalid options : #{options.inspect}"
|
||||
end
|
||||
|
||||
|
|
|
@ -104,6 +104,12 @@ class TestController < ActionController::Base
|
|||
render :file => path
|
||||
end
|
||||
|
||||
def render_file_as_string_with_instance_variables
|
||||
@secret = 'in the sauce'
|
||||
path = File.expand_path(File.join(File.dirname(__FILE__), '../fixtures/test/render_file_with_ivar.erb'))
|
||||
render path
|
||||
end
|
||||
|
||||
def render_file_not_using_full_path
|
||||
@secret = 'in the sauce'
|
||||
render :file => 'test/render_file_with_ivar'
|
||||
|
@ -124,6 +130,11 @@ class TestController < ActionController::Base
|
|||
render :file => path, :locals => {:secret => 'in the sauce'}
|
||||
end
|
||||
|
||||
def render_file_as_string_with_locals
|
||||
path = File.expand_path(File.join(File.dirname(__FILE__), '../fixtures/test/render_file_with_locals.erb'))
|
||||
render path, :locals => {:secret => 'in the sauce'}
|
||||
end
|
||||
|
||||
def accessing_request_in_template
|
||||
render :inline => "Hello: <%= request.host %>"
|
||||
end
|
||||
|
@ -182,10 +193,6 @@ class TestController < ActionController::Base
|
|||
render :text => "appended"
|
||||
end
|
||||
|
||||
def render_invalid_args
|
||||
render("test/hello")
|
||||
end
|
||||
|
||||
def render_vanilla_js_hello
|
||||
render :js => "alert('hello')"
|
||||
end
|
||||
|
@ -751,6 +758,11 @@ class RenderTest < ActionController::TestCase
|
|||
assert_equal "The secret is in the sauce\n", @response.body
|
||||
end
|
||||
|
||||
def test_render_file_as_string_with_instance_variables
|
||||
get :render_file_as_string_with_instance_variables
|
||||
assert_equal "The secret is in the sauce\n", @response.body
|
||||
end
|
||||
|
||||
def test_render_file_not_using_full_path
|
||||
get :render_file_not_using_full_path
|
||||
assert_equal "The secret is in the sauce\n", @response.body
|
||||
|
@ -766,6 +778,11 @@ class RenderTest < ActionController::TestCase
|
|||
assert_equal "The secret is in the sauce\n", @response.body
|
||||
end
|
||||
|
||||
def test_render_file_as_string_with_locals
|
||||
get :render_file_as_string_with_locals
|
||||
assert_equal "The secret is in the sauce\n", @response.body
|
||||
end
|
||||
|
||||
def test_render_file_from_template
|
||||
get :render_file_from_template
|
||||
assert_equal "The secret is in the sauce\n", @response.body
|
||||
|
@ -831,10 +848,6 @@ class RenderTest < ActionController::TestCase
|
|||
assert_equal 'appended', @response.body
|
||||
end
|
||||
|
||||
def test_attempt_to_render_with_invalid_arguments
|
||||
assert_raises(ActionController::RenderError) { get :render_invalid_args }
|
||||
end
|
||||
|
||||
def test_attempt_to_access_object_method
|
||||
assert_raises(ActionController::UnknownAction, "No action responded to [clone]") { get :clone }
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue