1
0
Fork 0
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:
Pratik Naik 2008-12-25 21:27:56 +00:00
parent dd0753458f
commit 061952392a
3 changed files with 36 additions and 9 deletions

View file

@ -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]

View file

@ -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

View file

@ -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