提交 96708af6 编写于 作者: C Cheah Chu Yeow 提交者: Pratik Naik

Ensure url_for(nil) falls back to url_for({}). [#472 state:resolved]

Signed-off-by: NPratik Naik <pratiknaik@gmail.com>
上级 2b4eb586
......@@ -613,7 +613,8 @@ def process(request, response, method = :perform_action, *arguments) #:nodoc:
#
# This takes the current URL as is and only exchanges the action. In contrast, <tt>url_for :action => 'print'</tt>
# would have slashed-off the path components after the changed action.
def url_for(options = {}) #:doc:
def url_for(options = {})
options ||= {}
case options
when String
options
......
......@@ -63,17 +63,15 @@ module UrlHelper
# # calls @workshop.to_s
# # => /workshops/5
def url_for(options = {})
options ||= {}
case options
when Hash
show_path = options[:host].nil? ? true : false
options = { :only_path => show_path }.update(options.symbolize_keys)
options = { :only_path => options[:host].nil? }.update(options.symbolize_keys)
escape = options.key?(:escape) ? options.delete(:escape) : true
url = @controller.send(:url_for, options)
when String
escape = true
url = options
when NilClass
url = @controller.send(:url_for, nil)
else
escape = false
url = polymorphic_path(options)
......
......@@ -313,6 +313,10 @@ def show_named_route
render :inline => "<%= show_named_route_#{params[:kind]} %>"
end
def nil_url_for
render :inline => '<%= url_for(nil) %>'
end
def rescue_action(e) raise e end
end
......@@ -329,7 +333,7 @@ def test_url_for_shows_only_path
assert_equal '/url_helper_with_controller/show_url_for', @response.body
end
def test_named_route_shows_host_and_path
def test_named_route_url_shows_host_and_path
with_url_helper_routing do
get :show_named_route, :kind => 'url'
assert_equal 'http://test.host/url_helper_with_controller/show_named_route', @response.body
......@@ -343,6 +347,11 @@ def test_named_route_path_shows_only_path
end
end
def test_url_for_nil_returns_current_path
get :nil_url_for
assert_equal '/url_helper_with_controller/nil_url_for', @response.body
end
protected
def with_url_helper_routing
with_routing do |set|
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册